2018. 7. 16. 17:26, 알고리즘/BOJ
https://www.acmicpc.net/problem/10272
문제를 조금 변형해 가장 왼쪽의 점에서 2개의 경로를 출발시킨다고 생각해봅시다. 가장 왼쪽의 점과 가장 오른쪽의 점을 제외한 N-2개의 점에 대해서는 두 경로 중 하나만 도달하고, 가장 왼쪽의 점과 가장 오른쪽의 점은 두 경로 모두 도달합니다. 우리가 원하는 것은 두 경로의 길이의 합을 최소로 만드는 것입니다.
그리고 D[a][b]를 한 개의 경로는 점 a까지 도달했고, 다른 한 개의 경로는 점 b까지 도달했을 때 경로의 길이의 합의 최소라고 해봅시다. 그리고 편의상 a < b라고 둡시다.
이 때 D[i][i+1]은 min(D[k][i] + dist(k, i+1))으로 구할 수 있고, D[i][i+k] (k > 1)은 D{i][i+k-1]+dist(k-1,k)로 구할 수 있습니다.
정답은 min(D[i][N]+dist(i,N))입니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 4243번: Security (0) | 2018.07.17 |
---|---|
[BOJ] 13335번: Trucks (0) | 2018.07.16 |
[BOJ] 2718번: 타일 채우기 (0) | 2018.07.16 |
[BOJ] 2342번: Dance Dance Revolution (0) | 2018.07.16 |
[BOJ] 11658번: 구간 합 구하기 3 (0) | 2018.07.16 |
[BOJ] 10713번: 기차 여행 (0) | 2018.07.16 |
Comments