• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

22.10.05 17:54 작성 조회수 284

1

저는 아래와 같이 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

답변을 작성해보세요.

5

안녕하세요^^

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