[BAKJOON] #1932. 정수 삼각형 (다이나믹 프로그래밍)
BAKJOON #1932. 정수 삼각형 문제를 파헤쳐보자 :)
BAKJOON #1446. 지름길 문제를 파헤쳐보자 :)
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)