게임 맵의 상태 maps가 매개변수로 주어질 때, 캐릭터가 상대 팀 진영에 도착하기 위해서 지나가야 하는 칸의 개수의 최솟값을 return 하도록 solution 함수를 완성해주세요. 단, 상대 팀 진영에 도착할 수 없을 때는 -1을 return 해주세요.
제한사항
from collections import deque
def solution(maps):
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
n = len(maps)
m = len(maps[0])
visit = [[0]*m for _ in range(n)]
visit[0][0] = 1
dq = deque()
dq.append((0,0))
while dq:
# 튜플이니까 x,y 따로 두고 써야함 -> 변경 불가!
y,x = dq.popleft()
for i in range(4):
nextX = x+dx[i]
nextY = y+dy[i]
if 0<=nextX<m and 0<=nextY<n and maps[nextY][nextX] == 1:
if visit[nextY][nextX] == 0:
visit[nextY][nextX] = visit[y][x]+1
dq.append((nextY, nextX))
# print(visit)
if visit[n-1][m-1]:
return visit[n-1][m-1]
else:
return -1