반응형

https://www.acmicpc.net/problem/11066

 

11066번: 파일 합치기

소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본

www.acmicpc.net

0123

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,n) for(int i=1;i<=n;i++)
using namespace std;
int t, n, dp[501][501], sum[501];
void input();
void func() {
    int total_diff = n - 1;
 
    rep(diff, total_diff) {
        rep(i, n-diff) {
            int j = i + diff;
            for (int k = i; k < j; k++) {
                int temp = dp[i][k] + dp[k + 1][j] + sum[j]-sum[i-1];
                if (dp[i][j] == 0 || temp < dp[i][j])
                    dp[i][j] = temp;
            }
        }
    }
 
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> t;
 
    while (t--) {
        input();
        func();
        cout << dp[1][n]<<'\n';
    }
}
 
void input() {
    memset(dp, 0sizeof(dp));
    cin >> n;
    rep(i, n) {
        cin >> sum[i];
        sum[i] += sum[i - 1];
    }
}
cs
반응형

'백준 > DP' 카테고리의 다른 글

백준 9252 [복습필수]  (0) 2021.07.29
백준 1915 [복습필수]  (0) 2021.07.28
백준 1937  (0) 2021.07.26
백준 1890  (0) 2021.07.23
백준 2293  (0) 2021.07.20

+ Recent posts