격자를 그래프로 바라보고 BFS가 무가중치 최단 거리를 보장하는 이유를 적용합니다. 좌표 경계·벽·방문 상태를 함께 관리하는 실전 패턴입니다.
0은 이동 가능, 1은 벽인 격자에서 start부터 goal까지 상하좌우로 이동하는 최소 이동 횟수를 반환하세요. 도달할 수 없으면 -1을 반환합니다. 시작과 도착 칸은 항상 0입니다.
grid_shortest_path(grid, start, goal)
시간 O(R×C), 공간 O(R×C)
실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.
| # | 이름 | grid | start | goal | 기대값 |
|---|---|---|---|---|---|
| 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 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.
코드를 작성하고 실행하면 5개의 테스트가 각각 표시됩니다.