문제 링크
https://www.acmicpc.net/problem/1446
풀이
학교에서 더 멀어지는 쪽으로는 가지 않으므로 $0$부터 $D$까지 순서대로 dp 배열을 채울 수 있습니다. 시작하는 곳인 길이 $0$에서는 거리 $0$만큼 이동한 것으로 시작하고 나머지 길이 $[1,D]$는 모두 $INF$로 초기화 합니다. $i$에서 $i+1$로 $1$의 거리로 갈 수 있고 $i$에서 시작하는 지름길을 이용해 도착위치로 지름길의 기리만큼의 거리로 갈 수 있기에 각각 $min$으로 갱신한다면 $dp_D$에 들어있는 값이 문제의 정답입니다. 다익스트라를 이용한다면 $O(D \log D)$에 풀 수 있겠지만 이 풀이를 이용한다면 $O(N + D)$로 풀 수 있습니다.
전체 코드
1 |
|