kakasoo

[node.js] 포도주 시식 ( 백준 2165번 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 포도주 시식 ( 백준 2165번 )

카카수(kakasoo) 2021. 3. 29. 18:22
반응형
const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

let count = 0;
const input = [0];

rl.on("line", (line) => {
    if (!count) {
        count = Number(line);
    } else {
        input.push(Number(line));
        if (input.length === count + 1) {
            main();
            rl.close();
        }
    }
}).on("close", () => {
    process.exit();
});

const main = () => {
    const DP = new Array(count + 1).fill(0);
    DP[1] = input[1];
    DP[2] = input[2] + DP[1];
    DP[3] = Math.max(DP[1] + input[3], input[2] + input[3]);

    for (let i = 1; i <= 3; i++) {
        if (isNaN(DP[i])) {
            DP[i] = 0;
        }
    }

    for (let i = 4; i <= count; i++) {
        DP[i] = Math.max(
            input[i] + DP[i - 2],
            input[i] + input[i - 1] + DP[i - 3],
            input[i] + input[i - 1] + DP[i - 4],
            DP[i - 1]
        );
    }

    console.log(Math.max(...DP));
};

자바스크립트에서는 타입이 없어서 버그를 찾기가 쉽지 않다.
90%에서 틀렸다고 나오곤 했는데, n이 1이나 2인 경우가 있기 때문이다. 그런데 자바스크립트에서는 NaN이라고 해버린 다음 그냥 다음으로 넘어가버리니 개발자 입장에서는 오휴를 찾기가 힘든 것이다.

반응형