728x90
BFS
기본적인 BFS 거리 문제.
SWEA의 [5105. 미로의 거리] 와 같은 문제이다.
from collections import deque
def bfs(n, m):
visited = [[0] * M for x in range(N)]
queue = deque([(0, 0, 1)])
delta = [(0, 1), (0, -1), (1, 0), (-1, 0)]
while queue:
cr, cc, cd = queue.popleft()
if (cr, cc) == (n, m):
return cd
for dr, dc in delta:
nr = cr + dr
nc = cc + dc
if 0 <= nr < N and 0 <= nc < M and arr[nr][nc] and not visited[nr][nc]:
queue.append((nr,nc,cd+1))
visited[nr][nc] = 1
N, M = map(int, input().split())
arr = [list(map(int, input())) for x in range(N)]
res = bfs(N-1, M-1)
print(res)
'PS > Python' 카테고리의 다른 글
[BOJ_Python] 17298. 오큰수 (0) | 2021.03.11 |
---|---|
[BOJ_Python] 1707. 이분 그래프 (0) | 2021.03.10 |
[BOJ_Python] 2206. 벽 부수고 이동하기 (0) | 2021.03.07 |
[BOJ_Python] 1012. 유기농 배추 (0) | 2021.03.07 |
[BOJ_Python] 2667. 단지 번호 붙이기 (0) | 2021.03.06 |
최근댓글