이 문제에서 가장 중요한 아이디어는 다익스트라를 두번 사용해야 한다는 점이다.
어떤 지점에서 X까지 도달하는 최소 거리 + X에서 어떤 지점까지 도달하는 최소 거리의 합의 최댓값을 구하는 문제였다.
필자는 시간초과 문제를 마주하여,, 몇 시간동안 고민했지만 바보같은 사고를 하였다.
X에서 어떤 지점까지 가는 최솟값은 두번째 다익스트라로 해결하였다.
어떤 지점에서 X까지 가는 것은 N번 돌렸었는데, X의 지점을 최대한 이용하여, 역방향 거리를 가지고 있는 벡터를 만들어서 그 벡터를 X에서 출발하면 해결할 수 있는 문제였다.
해당 테스트 케이스에서
DP1에는 4,0,6,3
DP2에는 1,0,3,7 이 들어있어서 정답 10을 구할 수 있다.
Code
Fealing
다익스트라를 두 번 사용하면 된다는 생각은 잘했지만,, 한 가지 생각이 부족했다…
최소비용 만들기 문제에서는 n번 다익스트라를 돌려서 확인했기 때문에,, 이번에도 N번하면 된다고 생각했지만,, 그것이 아니었다.
그래도 다음번에는 이런 생각을 더 할 수 있지 않을까 싶다!
Check out this code in Victoria’s Gist. Please Comment my code in this link.