https://school.programmers.co.kr/learn/courses/30/lessons/1844
from collections import deque
def solution(maps):
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
graph = [[-1 for _ in range(len(maps[0]))]for _ in range(len(maps))] # -1로 초기화
# len(maps) = 가로, len(maps[0]) = 세로
q = deque([(0,0)])
graph[0][0] = 1 # 첫 좌표 +1
while q:
y, x = q.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if 0<= ny < len(maps) and 0<= nx < len(maps[0]) and maps[ny][nx] == 1: # 범위 내에 있고 벽이 아닐 경우
if graph[ny][nx] == -1:
graph[ny][nx] = graph[y][x] + 1 # 지나가야 하는 칸의 개수 + 1
q.append([ny, nx]) # 큐에 삽입
return graph[-1][-1]
bfs로 해결했다.