[python] 깊이/너비 우선 탐색(DFS/BFS) > 게임 맵 최단거리

이희진·2022년 12월 5일
0

프로그래머스 문제

이 문제는 미로 통과하는 경우의 수 중에, 가장 최단거리를 구하는 문제다.
일단 최단거리를 구하는 문제기 때문에 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 

0개의 댓글