백 트래킹이라는 게 모든 가짓수를 다 탐색해 보는 것이잖아요.
이 문제를 예로 들어봅시다. - - - - 이런 식으로 있는 블럭을 예로 들어보고요.
1번째 블록을 놓았을 때 위치를 (x,y)라고 해 봅시다.
그러면 2번째 블록을 놓아봐야 하잖아요. 이 때 재귀 함수가 한 번 호출이 됩니다.
그런 탐색 과정이 다 끝나면 return이 될 거고요. depth가 1인 상태에서 계산을 하겠지요.
그리고 나서 visit[x][y] = 0을 하는 이유는
1번째 블록을 (x,y)에 놓는 경우도 있지만 다른 위치에 놓는 경우도 있기 때문에, 그 부분도 탐색을 해 주기 위함입니다.
instarbucks 6년 전
안녕하세요!
DFS 문제를 풀다가 헷갈리는? 부분이 생겨서 글을 올립니다.
이 코드에서 64~73번째 부분을 보면
DFS를 빠져나오면서 depth를 줄인 후, for문을 다 돌고나면
visited[x][y]=0; 해주는 부분이 있습니다.
이 부분이 이해가 잘(?) 안갑니다.
이 부분에서 이해가 잘안되다보니까
다른 dfs 문제를 풀 때도, 항상 여기서 막히더라구요.
제 질문이 난해하죠....선배님들의 조언 부탁드려요!