문제 링크
- http://icpc.me/11066
문제 출처
- 2015 ACM-ICPC 대전 인터넷 예선 F번
사용 알고리즘
- DP
시간복잡도
- O(n3)
풀이
n이 최대 500이기 때문에 O(n3)정도에 해결하면 됩니다.
dp[i][j]를 i번째 파일부터 j번째 파일까지 합칠 때 드는 최소 비용이라고 정의합시다.
s[i]는 첫 번째 파일부터 i번째 파일까지 모든 파일 크기의 합이라고 정의합시다. (prefix sum)
i부터 j까지의 파일을 합치는 것은 i부터 k까지 합치고, k+1부터 j까지 합치는 것과 같습니다. (단, i ≤ k < j)
점화식을 세워봅시다.
dp[i][j] = min(dp[i][k] + dp[k+1][j]) + s[j] - s[i-1]
3중 for문은 이용해 dp배열을 채워주면 됩니다.
전체 코드
1 |
|