본문 바로가기
알고리즘/python

2178번 미로 탐색(python3)

by 펀구구 2022. 1. 29.

bfs를 적용하면 간단하게 해결되는 문제다.

기존의 bfs는 visited 배열을 설정해줄때 0은 방문하지 않은 곳, 1은 방문한 곳으로 해주었는데, 이 문제의 경우에는 방문하지 않은 곳은 0, 방문한 곳은 이전 visited에 +1을 해주며 진행해 나간다.

 

from collections import deque

N, M = map(int, input().split())
miro = []
for i in range(N):
    data = input()
    data1 = []
    for j in data:
        data1.append(int(j))
    miro.append(data1)

visited = [[0] * M for i in range(N)]
#print(visited)

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
queue = deque()


def bfs(a, b):
    queue.append([a, b])
    visited[a][b] = 1
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < N and 0 <= ny < M:
                if visited[nx][ny] == 0 and miro[nx][ny] == 1:
                    queue.append([nx, ny])
                    visited[nx][ny] = visited[x][y] + 1


bfs(0, 0)
print(visited[N - 1][M - 1])

'알고리즘 > python' 카테고리의 다른 글

1012번 유기농 배추(python3)  (0) 2022.01.30
2606번 바이러스(python3)  (0) 2022.01.30
2667번 단지번호붙이기(python3)  (0) 2022.01.29
18405번 경쟁적 전염(python3)  (0) 2022.01.27
1715번 카드 정렬하기(python)  (0) 2022.01.27