728x90
📌 문제
https://swexpertacademy.com/main/main.do
📌 문제 접근 방법
- 다익스트라 알고리즘 사용
- 출발지에서 인접한 위치를 탐색하며 원래 저장된 비용보다 현재 경로로 온 비용이 적다면 비용을 갱신하고,
현재 위치를 큐에 넣는다. - 큐가 빌 때까지 2를 반복 후, 도착지에 저장된 비용을 출력한다.
📌 코드
from collections import deque
import sys
sys.stdin = open('input.txt')
def restore(i, j):
queue = deque()
queue.append((i, j))
dxy = [(1, 0), (-1, 0), (0, 1), (0, -1)]
while queue:
x, y = queue.popleft()
for dx, dy in dxy:
nx, ny = x+dx, y+dy
if 0 <= nx < N and 0 <= ny < N:
if cost[x][y]+load[nx][ny] < cost[nx][ny]:
cost[nx][ny] = cost[x][y]+load[nx][ny]
queue.append((nx, ny))
T = int(input())
for t in range(1, T+1):
N = int(input())
load = []
for _ in range(N):
temp = []
for n in input():
temp.append(int(n))
load.append(temp)
cost = [[float('inf') for _ in range(N)] for _ in range(N)]
cost[0][0] = load[0][0]
restore(0, 0)
print('#{} {}'.format(t, cost[N-1][N-1]))
728x90
'ALGORITHM > SW Expert Academy' 카테고리의 다른 글
[SWEA/Python] 2383. 점심 식사시간 (0) | 2021.12.07 |
---|---|
[SWEA/Python] 1795. 인수의 생일 파티 (0) | 2021.10.19 |
[SWEA/Python] 7465. 창용 마을 무리의 개수 (0) | 2021.10.15 |
[SWEA/Python] 1251. 하나로 (0) | 2021.10.15 |
[SWEA/Python] 2814. 최장 경로 (0) | 2021.10.15 |
댓글