from collections import deque
def solution(maps):
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
n = len(maps)
m = len(maps[0])
queue = deque()
# 시작점인 (0,0)을 큐에 추가 . (0,0)은 미로의 시작 위치
queue.append((0, 0))
while queue:
# x,y 변수는 상하좌우로 인접한 노드들을 탐색하는데 사용
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or ny < 0 or nx >= n or ny >= m:
continue
if maps[nx][ny] > 1 or maps[nx][ny] == 0:
continue
if nx == 0 and ny == 0:
continue
queue.append((nx, ny))
maps[nx][ny] += maps[x][y]
return maps[n-1][m-1] if maps[n-1][m-1] > 1 else -1
[풀이]
[해결방법]
너비 우선 탐색(BFS)를 사용하여 최단 경로를 찾는다. 큐를 이용하여 BFS를 구현하였다.
dx, dy: 이동할 수 있는 방향을 나타내는 리스트