[Algorithm] 미로 탐색 2178.py - BFS
https://www.acmicpc.net/problem/2178
from collections import deque
n, m = map(int, input().split())
data = []
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
for i in range(n):
data.append(list(map(int, input())))
visited = [[0] * (m + 1) for i in range(n + 1)]
queue = deque([[0,0]])
visited[0][0] = 1
while queue:
a,b= queue.popleft()
if (a+1)==n and (b+1)==m:
print(visited[a][b])
break
for i in range(4):
if n>a + dy[i]>=0 and m>b + dx[i]>=0:
if data[a + dy[i]][b + dx[i]] == 1 and visited[a + dy[i]][b + dx[i]] == 0:
queue.append([a + dy[i], b + dx[i]])
visited[a + dy[i]][b + dx[i]] = visited[a][b]+1
-
미로에 좌표를 부여해 BFS 탐색
1 (0,0) 0 1 1 1 1
1 (0,1) 0 1 0 1 0
1 (0,2) 0 1 0 1 1
1 (0,3) 1 1 0 1 1 -
동서남북탐색
-
최소한 거리 구하기
1이있는 칸은 다 구했는데 최소의 칸 수를 어떻게 구해야할까?
visited[a + dy[i]][b + dx[i]] = visited[a][b]+1
방문 처리를 그 전 값에 1을 더해서 표시한다.
너비탐색으로 같은 너비에 잇는 값은 같은 방문값을 가지므르 결과값은 최소의 값이 된다.
Author And Source
이 문제에 관하여([Algorithm] 미로 탐색 2178.py - BFS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jifrozen/Algorithm-미로-탐색-2178.py-BFS저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)