kakasoo

[node.js] 합분해 ( 백준 2225번 ) 본문

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

[node.js] 합분해 ( 백준 2225번 )

카카수(kakasoo) 2021. 4. 3. 13:40
반응형
const readline = require("readline");

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

rl.on("line", (line) => {
    main(line);
    rl.close();
}).on("close", () => process.exit());

/**
 *
 * @param {string} line
 */
const main = (line) => {
    const [N, K] = line.split(" ").map(Number);
    const DP = new Array(K + 1).fill(0);
    // DP[k][N] : k개로 N을 만드는 경우의 수

    for (let i = 0; i <= K; i++) {
        DP[i] = [];
        for (let j = 0; j <= N; j++) {
            DP[i][j] = 0;
        }
    }
    DP[0][0] = 1;

    for (let i = 0; i <= K; i++) {
        for (let j = 0; j <= N; j++) {
            for (let l = 0; l <= j; l++) {
                if (i - 1 >= 0) {
                    DP[i][j] += DP[i - 1][j - l];
                    DP[i][j] %= 1000000000;
                }
            }
        }
    }

    console.log(DP[K][N]);
};
반응형