문제를 보자마자 전형적인 BFS 문제라고 생각했습니다. 특이할 것 없이 queue를 이용한 graph bfs문제를 풀 면 됩니다.
오타때문에 런타임 에러가 났었는데 n이랑 m 잘 확인하시길...
from collections import deque
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(x,y,n,m, maps):
q = deque([(x,y)])
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and maps[nx][ny] == 1:
q.append((nx, ny))
maps[nx][ny] = maps[x][y] + 1
return maps[n-1][m-1]
def solution(maps):
n = len(maps)
m=len(maps[0])
ans = bfs(0,0, n,m, maps)
return ans if ans > 1 else -1