본문 바로가기

Algorithm

[백준] 미로 탐색 2178 Python (BFS)

포인트: 인접한 네 방향(좌우상하)에 0이 아닌 값이면 차례대로 증가된 값을 리스트에 저장

조건

- 배열의 범위를 넘으면 안됨

- 방문한(0이 아닌 값이 기입되어 있으면)칸이면 값을 저장하지 않음

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
n, m = map(int, input().strip().split())
 
queue = [[0,0]]
lists = []
for i in range(n):
    lists.append(list(map(int, input())))
 
visited = [[0]*for _ in range(n)]
visited[0][0= 1
 
dx = [-1010]
dy = [010-1]
 
while len(queue) != 0:
    x, y = queue.pop(0)
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
 
        if 0 > nx or nx >= n: continue
        if 0 > ny or ny >= m: continue
        if lists[nx][ny] == 0: continue
        if visited[nx][ny] != 0: continue
 
        visited[nx][ny] = visited[x][y] + 1
        queue.append([nx,ny])
 
print(visited[n-1][m-1])
 

참고 URL: https://m.blog.naver.com/wpghks7/221604689852