-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path11066.js
41 lines (33 loc) · 1 KB
/
11066.js
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
const fs = require("fs");
// 파일에서 입력 데이터를 읽어옴
const input = fs.readFileSync("input.txt", "utf-8").trim().split("\n");
const T = parseInt(input[0]); // 테스트 케이스의 수
for (let i = 1; i <= T; i++) {
const K = parseInt(input[i * 2 - 1]); // 파일의 장 수
const fileSizes = input[i * 2].split(" ").map(Number); // 파일 크기 배열
const sum = [];
for (let i = 1; i < K + 1; i++) {
sum.push(input[i].split(" ").map(Number));
}
const DP = [];
for (let i = 0; i < K; i++) {
DP.push([]);
for (let j = 0; j < K; j++) {
DP[i].push(0);
}
}
for (let size = 1; size < N; size++) {
for (let start = 0; start < N - size; start++) {
const end = start + size;
let result = Infinity;
for (let cut = start; cut < end; cut++) {
result = Math.min(
result,
DP[start][cut] + DP[cut + 1][end] + sum[end] - sum[start - 1]
);
}
DP[start][end] = result;
}
}
}
console.log(DP[0][-1]);