bfs를 사용해 쉽게 해결할 수 있는 문제였다
그러나 while문에서 조건을 구현해주는 과정이 조금 헷갈렸다
소스 코드
from collections import deque
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(maps, i, j, n, m):
q = deque()
q.append((i, j))
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 > nx or nx >= n or 0 > ny or ny >= m:
continue
if maps[nx][ny] == 0:
continue
if maps[nx][ny] == 1:
maps[nx][ny] = maps[x][y] + 1
q.append((nx, ny))
def solution(maps):
answer = 0
n = len(maps)
m = len(maps[0])
bfs(maps, 0, 0, n, m)
if maps[n-1][m-1] == 1:
return -1
else:
return maps[n-1][m-1]