๐Algorithm
๋ฐฑ์ค[JS] > 1446๋ฒ ์ง๋ฆ๊ธธ
devWarrior
2025. 3. 5. 23:28
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1446
๋ฌธ์ ํ์ด
DP๋ก ์ฐ์ฐํ์๋ฅผ ์ต์ ํํ์ฌ ํ ์ ์๋ค. dp[1]์ 1์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์ ๋ ์ต์๊ฑฐ๋ฆฌ๋ฅผ ์๋ฏธํ๋ฉฐ ์์๋๋ก dp[1], dp[2], dp[3] ... ์ฑ์๊ฐ๋ฉด์ ๋ง์ง๋ง์ dp[D]๋ฅผ ๊ตฌํ ์ ์๋ค.
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let [N, D] = input
.shift()
.split(" ")
.map((n) => Number(n));
let dp = Array(D + 1).fill(0);
let shortcut = input.map((str) => {
return str.split(" ").map((n) => Number(n));
});
shortcut.sort((a, b) => {
if (b[1] !== a[1]) {
return a[1] - b[1];
} else {
return a[2] - b[2];
}
});
for (let i = 1; i <= D; ++i) {
dp[i] = dp[i - 1] + 1;
for (let j = 0; j < N; ++j) {
let [start, end, length] = shortcut[j];
if (end === i) {
dp[i] = Math.min(dp[i], dp[start] + length);
}
}
}
console.log(dp[D]);