https://www.acmicpc.net/problem/14002
14002번: 가장 긴 증가하는 부분 수열 4
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
📌 작성한 코드
// 14002
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "Beakjoon/Gold/test.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
const N = Number(input[0]);
const list = input[1].split(" ").map(Number);
const dp = Array.from({ length: N }, () => new Array(2));
list.forEach((val, i) => {
dp[i][0] = 1;
dp[i][1] = `${val}`;
});
for (let i = 1; i < N; i++) {
for (let j = 0; j < i; j++) {
if (list[i] > list[j]) {
dp[i][0] = Math.max(dp[i][0], dp[j][0] + 1);
if (dp[i][0] === dp[j][0] + 1) {
dp[i][1] = dp[j][1] + ` ${list[i]}`;
}
}
}
}
let maxIndex = 0;
for (let i = 1; i < N; i++) {
if (dp[i][0] > dp[maxIndex][0]) {
maxIndex = i;
}
}
console.log(dp[maxIndex].join("\n"));
📌 설명

✅ 성공

'알고리즘 > 백준' 카테고리의 다른 글
| [JavaScript/DP] 백준 골드 5 : 2195 - 문자열 복사 (0) | 2024.03.28 |
|---|---|
| [JavaScript/DP] 백준 골드 5 : 2410 - 2의 멱수의 합 (0) | 2024.03.26 |
| [JavaScript/구현] 백준 골드 3 : 16236 - 아기 상어 (0) | 2024.03.20 |
| [JavaScript/DP] 백준 골드 5 : 2666 - 벽장문의 이동 (2) | 2024.03.19 |
| [JavaScript] 백준 골드 5 : 5582 - 공통 부분 문자열 (1) | 2024.03.18 |