프로그래밍/알고리즘 풀이
[node.js] 가장 큰 증가 부분 수열 ( 백준 11055번 )
카카수(kakasoo)
2021. 3. 30. 19:10
반응형
이전 부분 수열 문제들처럼 풀되 조건만 바꿔주면 된다. 그런데 나는 틀렸었는데, 그 이유는 DP[i]의 값을 1로 초기화했기 때문이다.
이전 문제들은 개수를 세는 것이기 때문에 전부 1로 시작했겠지만, 이건 합산하는 것이기 때문에 각 DP[i]는 자기 차례의 숫자가 초깃값으로 저장되어야 한다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.output,
});
let count = 0;
rl.on("line", (line) => {
if (!count) {
count = Number(line);
} else {
main(line);
rl.close();
}
}).on("close", () => {
process.exit();
});
/**
*
* @param {string} line
*/
const main = (line) => {
const numbers = line.split(" ").map(Number);
const DP = [];
for (let i = 0; i < numbers.length; i++) {
DP[i] = numbers[i];
for (let j = 0; j < i; j++) {
if (numbers[j] < numbers[i] && DP[i] < DP[j] + numbers[i]) {
DP[i] = DP[j] + numbers[i];
}
}
}
console.log(Math.max(...DP));
};
반응형