# 녹색 옷 입은 애가 젤다지?
from collections import deque
import sys
input = sys.stdin.readline
MAX = sys.maxsize
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
def bfs():
q = deque()
q.append((0, 0))
visit[0][0] = arr[0][0]
while q:
x, y = q.popleft()
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < N and 0 <= ny < N:
if visit[nx][ny] > visit[x][y] + arr[nx][ny]:
visit[nx][ny] = visit[x][y] + arr[nx][ny]
q.append((nx, ny))
case = 1
while True:
N = int(input())
if N == 0:
break
arr = []
for _ in range(N):
arr.append(list(map(int, input().split())))
visit = [[MAX] * N for _ in range(N)]
bfs()
print('Problem', case, end='')
print(":", visit[N-1][N-1])
case += 1
BFS
1. N이 0이 입력 될 때 까지 while문 수행
2. 0,0에서 시작해서 도둑루피의 값을 해당 visit에 누적하며 bfs이동
3. 도착지점의 visit 출력
다익스트라로 풀려다가 그냥 bfs로 풀었다
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 12581번 - 숨바꼭질 2 (파이썬) (0) | 2022.01.21 |
---|---|
[백준] 17142번 - 연구소 3 (파이썬) (0) | 2022.01.20 |
[백준] 1325번 - 효율적인 해킹 (파이썬) (1) | 2022.01.20 |
[백준] 2178번 - 미로 탐색 (파이썬) (0) | 2022.01.20 |
[백분] 13913번 - 숨바꼭질 3 (파이썬) (0) | 2022.01.20 |