이 문제는 미로 통과하는 경우의 수 중에, 가장 최단거리를 구하는 문제다.
일단 최단거리를 구하는 문제기 때문에 bfs 방식으로 구현하려고 했다.
queue를 활용했고, 목적지에 도달하는 순간 바로 정답을 리턴한다.
아래는 첫번째 나의 솔루션인데, 해결되지 않았다.
디버깅 필요!!!
from collections import deque
def solution(maps):
visited = [[0,0,0,0,0]] * 5
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
queue = deque()
queue.append((4, 4, 0))
visited[4][4] = 1
answer = 0
while(queue):
x, y, idx = queue.pop()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
idx += 1
if nx == 0 and ny == 0:
answer = idx
return answer
elif nx >= len(maps) or nx < 0 or ny >= len(maps[0]) or ny < 0:
continue
else:
if maps[nx][ny] == 1 and visited[nx][ny]==0:
queue.append((nx, ny, idx))
visited[nx][ny] = 1
return -1