[BAKJOON] #1932. 정수 삼각형 (다이나믹 프로그래밍)
BAKJOON #1932. 정수 삼각형 문제를 파헤쳐보자 :)
BAKJOON #1446. 지름길 문제를 파헤쳐보자 :)
![[BAKJOON] #1446. 지름길 (최단 경로)](https://assets.bullet.site/files?id=2cc13e36-0d89-81fc-8a84-f4a6b4a78e1d&url=attachment:4b4bd82d-2bd6-4d82-a2a2-ac303c53d229:%e1%84%8e%e1%85%a1%e1%84%85%e1%85%a3%e1%86%bc.png)
import heapq def dijkstra(N, D, shortcuts): INF = int(1e9) dp = [INF] * (D + 1) dp[0] = 0 pq = [(0, 0)] # (거리, 위치) while pq: dist, cur = heapq.heappop(pq) if dist > dp[cur]: continue # 일반 도로 이동 if cur + 1 <= D and dp[cur + 1] > dist + 1: dp[cur + 1] = dist + 1 heapq.heappush(pq, (dp[cur + 1], cur + 1)) # 지름길 이동 for s, e, l in shortcuts: if cur == s and e <= D and dp[e] > dist + l: dp[e] = dist + l heapq.heappush(pq, (dp[e], e)) return dp[D] # 입력 받기 N, D = map(int, input().split()) shortcuts = [tuple(map(int, input().split())) for _ in range(N)] # 다익스트라 알고리즘 수행 result = dijkstra(N, D, shortcuts) print(result)