강의로 돌아가기
최진균

[Python] BFS를 사용한 미로탈출

BFS를 사용한 미로탈출 알고리즘을 사용하여 X를 0, S, L, E를 1로 저장한 후 이동거리를 반환하는 방법을 사용했습니다.
아래의 코드를 문제에 맞게 변형하면 쉽게 해결할 수 있습니다.

from collections import deque

n, m = map(int, input().split())

maze = []
for i in range(n):
maze.append(list(map(int, input())))

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

def bfs(x, y):
queue = deque()
queue.append((x, y))

while queue:
    x, y = queue.popleft()

    for i in range(4):
        nx, ny = x + dx[i], y + dy[i]

        if nx < 0 or ny < 0 or nx >= n or ny >= m:
            continue

        if maze[nx][ny] == 0:
            continue

        if maze[nx][ny] == 1:
            maze[nx][ny] = maze[x][y] + 1

            queue.append((nx, ny))

return maze[n-1][m-1]

print(bfs(0, 0))

1 개의 답변
최진균

왜 while문만 칸막이 안에 들어갔을까요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.