• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

WordSearch

20.11.13 03:34 작성 조회수 114

1

안녕하세요. BFS/DFS 강의를 보면서 궁금한점이 있어서 질문남깁니다!

wordSearch 맨 마지막 부분에,

visited[x][y] = false 로, 원상복귀 시킨다고 하셨는데

이 부분은 어차피 다시 갈 곳이 아닌데 굳이 있어야 하는 코드인가요??

없어도 정상적으로 답이 출력되어서 제가 잘못이해하고있는건지 궁금합니다 ㅜㅜ

답변 1

답변을 작성해보세요.

0

안녕하세요.

답변이 늦어서 죄송합니다.

앞부분에서   visited[x][y]=true;  넣고 다시 파고들면서 true를 넣고 있습니다. 

dfs는 파고들면서 true를 넣다가 , 왔던길을 다시 돌아갈이 생기죠 

true로 넣었는데 다시 원복을 하고  싶은거죠, 그 경우 때문에  false로 원복을 시키는겁니다.

헷갈리시면 아래 로그를 찍어서 보세요. visited에 해당하는 부분을 추적해 보세요.

이문제 상당히 중요한 문제입니다.

이거 이해하시면  상당히 좋은 결과를 맺으실겁니다.

github에 ㅇ주석으로 업데이트 해놨습니다.

1주일 넘더라도 꼭 이해하세요

 private void print(boolean[][] visited) {

    if(visited==null|| visited.length==0)return;

    int m=visited.length,n=visited[0].length;

    for(int i=0; i<m; i++) {

    for(int j=0; j<n; j++) {

    System.out.print(visited[i][j]+"\t");

    }

    System.out.println();

    }

    }