강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

황준호님의 프로필 이미지
황준호

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

11. 미로의 최단거리 통로(BFS)

(nx ==7 && ny == 7) 일때 return 해줘야 하지 않나요?

작성

·

420

2

저는 아래와 같이 nx가 7이 될때 return을 해줘야 한다고 생각했습니다.

왜냐하면 distance 배열에서 거리를 입력하는데, 7,7에 도착하는 순간 return을 한 그 순간의 값이 최단경로의 길이라고 생각했습니다.

return을 해주지 않는다면 distance[7][7]의 값이 최단 거리가 아닌 가장 긴 거리의 값으로 덮어써 진다고 생각을 했는데, 왜 (nx ==7 && ny == 7)경우 return 하게끔 예외처리를 해주지 않아도 되는지 궁금합니다.

 for (int i = 0; i < 4; i++) {
                int nx = x + dx[i];
                int ny = y + dy[i];
//                if (nx ==7 && ny == 7) {
//                    distance[nx][ny] = distance[x][y] + 1;
//                    answer = distance[nx][ny];
//                    return;
//                }
                if (nx >= 1 && nx <= 7 && ny >= 1 && ny <= 7 && board[nx][ny] == 0) { // 범위 안이고 해당 좌표의 값이 0 일 경우
                    board[nx][ny] = 1;
                    distance[nx][ny] = distance[x][y] + 1;
                    queue.offer(new Point(nx, ny));
                }
            }

답변 1

7

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

board[nx][ny]=1 로 체크를 하고 체크된 곳은 다시 가지 않기 때문에 덮어써지는 경우는 없습니다.

황준호님의 프로필 이미지
황준호

작성한 질문수

질문하기