๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.4 : ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์˜ ๊ฐฏ์ˆ˜ (DP)

by xxilliant 2025. 5. 8.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/12929

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 4.

dp๊ธด ํ•œ๋ฐ, ๊ฐ์ด ์•ˆ ์žกํ˜€์„œ ์งˆ๋ฌธํ•˜๊ธฐ ๊ฒŒ์‹œํŒ์„ ์ฐธ๊ณ ํ–ˆ๋‹ค...ใ…Ž.ใ…Ž

๊ณฑ์…ˆ dp ๋ฌธ์ œ๋Š” ์ฒ˜์Œ์ธ๋“ฏ!!!

์•„๋ž˜ ํ’€์ด์ฒ˜๋Ÿผ, ๊ด„ํ˜ธ ํ•œ ์Œ์„ ์ค‘์‹ฌ์œผ๋กœ

()์˜ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๊ด„ํ˜ธ ์Œ, ๊ทธ๋ฆฌ๊ณ  ๋ฐ–์— ๋‚˜์˜ค๋Š” ๊ด„ํ˜ธ ์Œ

๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณฑํ•˜๋ฉด ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ n=3์ผ๋•Œ๋Š”,

() / ()() -> ๊ธฐ์ค€ ๊ด„ํ˜ธ์— ์•„๋ฌด๊ฒƒ๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š์Œ. ๋ฐ”๊นฅ์—๋Š” 2๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ dp[0] * dp[2] = 1*2

(()) / () -> ๊ธฐ์ค€ ๊ด„ํ˜ธ์— 1๊ฐœ, ๋ฐ”๊นฅ์— 1๊ฐœ. dp[1] * dp[1] = 1*1

(()()) -> ๊ธฐ์ค€ ๊ด„ํ˜ธ์— 2์„ธํŠธ ๋“ค์–ด๊ฐ€๊ณ , ๋ฐ”๊นฅ์—๋Š” 0๊ฐœ. dp[2] * dp[0] = 2*1

๋”ฐ๋ผ์„œ dp[3] = 5์ด๋‹ค.

 

์ถœ์ฒ˜ : https://school.programmers.co.kr/questions/50021

 

๋‚˜์˜ ํ’€์ด

function solution(n) {
    var answer = 0;
    let dp = new Array(n+1).fill(0);
    dp[0] = 1;
    dp[1] = 1;
    dp[2] = 2;
    for(let i=3; i<=n; ++i){
        for(let j=0; j<i; ++j){
            dp[i] += dp[i-j-1] * dp[j];
        }
    }
    // console.log(dp);
    answer = dp[n];
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•