๐ ์ฆ๊ฐ์์ดDP์ ๊ฐ์์์ดDP๋ฅผ ๊ฐ๊ฐ ๋ง๋ ํ ํฉ์ณ์ฃผ์ด์ผํ๋ค.
๐งธ ๋ ์ฆ๊ฐ์์ดDP ๋ง๋๋ ๋ฐฉ๋ฒ๋ ์๊ณ ์์๋ค..๐ฅ ์ด์ ๋ ๊ผญ ๊ธฐ์ตํด์ผ์ง.
์ฝ๋
const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = +input.shift();
input = input[0].split(" ").map(Number);
let increaseDP = new Array(N).fill(1);
let decreaseDP = new Array(N).fill(1);
let dp = [];
for (let i = 1; i < N; i++) {
let values = [1];
for (let j = 0; j < i; j++) {
if (input[j] < input[i]) {
values.push(increaseDP[j] + 1);
}
}
increaseDP[i] = Math.max(...values);
}
for (let i = N - 2; i >= 0; i--) {
let values = [1];
for (let j = N - 1; j > i; j--) {
if (input[j] < input[i]) {
values.push(decreaseDP[j] + 1);
}
}
decreaseDP[i] = Math.max(...values);
}
for (let i = 0; i < N; i++) {
dp[i] = increaseDP[i] + decreaseDP[i] - 1;
}
console.log(Math.max(...dp));