728x90
반응형
from collections import deque
n, m = map(int,input().split())
graph = []
for i in range(n) :
graph.append(list(map(int,input())))
# 상 하 좌 우 x 가 세로 y 가 가로
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 = x + dx[i]
ny = y + dy[i]
if nx < 0 or ny < 0 or nx >= n or ny >= m :
continue
if graph[nx][ny] == 0 :
continue
if graph[nx][ny] == 1 :
graph[nx][ny] = graph[x][y] +1
queue.append((nx,ny))
return graph[n-1][m-1]
print( bfs(0,0) )
1. 해결 : 그래프의 최단거리를 찾는 문제는 보통 bfs 를 사용해서 푼다.
2. point :
- bfs 를 사용할 것이므로 큐를 이용해서 구현한다. 효율성을 위해 deque 를 선언하고 사용했다.
- 차례대로 큐에 집어 넣고 그 와 가까운 노드들을 방문하여 처리한다는 느낌으로 이해한다.
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
728x90
반응형
'백준 > DFS_BFS' 카테고리의 다른 글
# 1260번: DFS와 BFS (0) | 2020.10.11 |
---|---|
깊이/너비 우선 탐색(DFS/BFS)-여행경로* (0) | 2020.10.11 |
# 1012: 유기농 배추 (0) | 2020.10.02 |
# 2667: 단지 번호 붙이기 (0) | 2020.10.02 |
# 2606 바이러스 (0) | 2020.10.02 |