프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 5972 택배 배송 Python

중규리 2024. 1. 22. 12:47

🐸 문제 정보

 

5972번: 택배 배송

농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는

www.acmicpc.net

 

🤖 알고리즘

다익스트라

 

⏱️ 풀이 시간

07.49m

 

📝 풀이

다익스트라 + 최단경로 구하기의 정석같은 문제였다.

별 다른 구현 없이, 다익스트라 알고리즘만 구현할 수 있으면 풀 수 있었다.

해당 알고리즘은 이전에 정리해둔 포스팅이 있으니 아래에서 참고하면 좋을 것 같다.

 

 

최단 경로 찾기 with Python

🌊 최단 경로 찾기 알고리즘 🐸 이해하기 최단경로 찾기 알고리즘? 노드 간 가중치가 주어질 때, 시작 노드부터 모든 노드까지의 최소값을 구하는 알고리즘이다. 이해하는데에 큰 어려움은 없

99uulog.tistory.com

 

🧑‍💻 나의 답

# pypy3

import sys, heapq
input = sys.stdin.readline
INF = sys.maxsize

n, m = list(map(int, input().rstrip().split()))
graph = [[] for _ in range(n + 1)]
distance = [INF] * (n + 1)

for _ in range(m):
    u, v, m = list(map(int, input().rstrip().split()))
    graph[u].append((v, m))
    graph[v].append((u, m))

def dijkstra(start):
    distance[start] = 0
    q = []
    heapq.heappush(q, (0, start))
    while q:
        dist, now = heapq.heappop(q)
        if distance[now] < dist: continue
        for node in graph[now]:
            if dist + node[1] < distance[node[0]]:
                distance[node[0]] = dist + node[1]
                heapq.heappush(q, (dist + node[1], node[0]))

dijkstra(1)
print(distance[n])

'PS > 문제풀이' 카테고리의 다른 글

백준 13144 List of Unique Numbers Python  (0) 2024.01.22
백준 2631 줄세우기 Python  (1) 2024.01.22
백준 2531 회전 초밥 Python  (0) 2024.01.22
백준 3758 KCPC Python  (1) 2024.01.22
백준 1253 좋다 Python  (1) 2024.01.21