문제풀이/DP
[파이썬] [DP] 백준 1446 지름길
승무_
2023. 2. 28. 12:59
문제
https://www.acmicpc.net/problem/1446
1446번: 지름길
첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이
www.acmicpc.net
코드
import sys
input=sys.stdin.readline
n,d=map(int, input().split())
graph=[[] for _ in range(d+1)]
for _ in range(n):
a,b,c=map(int, input().split())
if b<=d:
graph[a].append([b,c])
dp=[]
for i in range(d+1):
dp.append(i)
for i in range(d+1):
# 지름길(dp[i])과 고속도로(dp[i-1]+1) 비교
dp[i] = min(dp[i], dp[i - 1] + 1)
if graph[i]:
for des,dis in graph[i]:
#지름길이 더 짧을 경우 갱신
dp[des]=min(dp[des], dis+dp[i])
print(dp[d])
시간 복잡도
O(고속도로 길이)