1. 문제
2178번: 미로 탐색
- 1 : 이동가능 칸
- 0 : 이동불가능 칸
- (1, 1)에서 (n, m)으로 이동할 때 이동한 최소 칸 수를 구하라
2. 알고리즘
- BFS
- 인접칸으로 이동할 때 이동한 칸 수 저장
3. 소스코드
from collections import deque
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
miro = [list(map(int, input())) for _ in range(n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs():
q = deque()
q.append((0, 0))
while q:
x, y = q.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx < 0 or ny < 0 or nx >= n or ny >= m:
continue
if miro[nx][ny] != 1:
continue
miro[nx][ny] = miro[x][y] + 1
q.append((nx, ny))
return miro[n - 1][m - 1]
print(bfs())