728x90
반응형
목차
https://www.acmicpc.net/problem/2240
문제
코드 구현 방향
상태가 총 3개이므로 그에 맞추어 3차원 배열로 메모이제이션해 풀어야 한다.
이때 dp는 그 전 상태의 최댓값을 받아서 누적해 주는 형식으로 가야 한다.
코드 구현 시 주의점
처음에 1번 나무에서 시작하지만 움직이고 시작할 수 있기 때문에 처음 시작점을 두개로 하고 max를 구해주어야 한다.
코드 구현
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
//sec cnt num
let [T, W] = input[0].trim().split(" ").map(Number);
let dp = Array.from({ length: T + 1 }, () =>
Array.from({ length: W + 1 }, () => Array(2).fill(0))
);
let idx = 1;
let tree = [];
while (idx < input.length) {
tree.push(+input[idx] - 1);
idx++;
}
searching(1, W, 0);
function searching(sec, cnt, num) {
if (cnt < 0) return -1;
if (sec === T) return 0;
if (dp[sec][cnt][num]) return dp[sec][cnt][num];
return (dp[sec][cnt][num] =
Math.max(
searching(sec + 1, cnt - 1, num ^ 1),
searching(sec + 1, cnt, num)
) +
(tree[sec] === num));
}
console.log(Math.max(searching(0, W - 1, 1), searching(0, W, 0)));
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][구현] 2116 주사위 쌓기 NodeJs 구현 (0) | 2025.03.31 |
---|---|
[백준][구현] 1041 주사위 NodeJs 구현 (0) | 2025.03.31 |
[백준][DP] 4811 알약 NodeJs 구현 (1) | 2025.02.11 |
[백준][dp][dfs] 1520 NodeJs 구현 (0) | 2025.02.07 |
[백준][bfs] 1600 말이 되고픈 원숭이 NodeJs 구현 (0) | 2025.02.06 |