최단 경로·연습 문제

격자 최단 경로

문제 설명PROBLEM

격자 최단 경로

왜 이 문제를 푸나요?

격자를 그래프로 바라보고 BFS가 무가중치 최단 거리를 보장하는 이유를 적용합니다. 좌표 경계·벽·방문 상태를 함께 관리하는 실전 패턴입니다.

익혀야 할 개념

  • 격자 그래프
  • BFS 최단 거리
  • 상하좌우 방향 벡터
  • 좌표 방문 처리

과제

0은 이동 가능, 1은 벽인 격자에서 start부터 goal까지 상하좌우로 이동하는 최소 이동 횟수를 반환하세요. 도달할 수 없으면 -1을 반환합니다. 시작과 도착 칸은 항상 0입니다.

함수

grid_shortest_path(grid, start, goal)

목표 복잡도

시간 O(R×C), 공간 O(R×C)

테스트 케이스

실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.

#이름gridstartgoal기대값
1벽 우회[[0, 0, 0], [1, 1, 0], [0, 0, 0]][0, 0][2, 2]4
2도달 불가[[0, 1], [1, 0]][0, 0][1, 1]-1
3시작과 도착 동일[[0]][0, 0][0, 0]0
4일직선 경로[[0, 0, 0, 0]][0, 0][0, 3]3
5직사각형 우회[[0, 1, 0], [0, 0, 0]][0, 0][0, 2]4

Python 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.

개념 노트와 실수 포인트

최단 경로

  • 가중치가 없으면 BFS, 음수가 없는 가중치 그래프는 다익스트라를 사용합니다.
  • 다익스트라에서는 힙에서 꺼낸 오래된 거리 항목을 건너뛰어야 합니다.