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

[Javascript/PGS] Lv.3 : ๊ฑฐ์Šค๋ฆ„๋ˆ (DP)

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

 

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

 

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

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

programmers.co.kr


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

๋ณด์ž๋งˆ์ž dp๋ฌธ์ œ์ธ๊ฑธ ๋ˆˆ์น˜์ฑ˜๋‹ค!!! ์šฐํ•˜ํ•˜

๋ฌธ์ œ ์œ ํ˜•์„ ์บ์น˜ํ•˜๋Š” ์‹ค๋ ฅ์€ ํ™•์‹คํžˆ ์ ์  ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค

 

์ฃผ์˜ํ•  ์ ์€

1. dp[0] = 1์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค˜์•ผ ํ•จ. (0์›์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• 1๊ฐ€์ง€)

2. ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆด ๋•Œ, ๋ˆ์˜ ๋‹จ์œ„๋ฅผ ๋ฐ”๊นฅ์—, ์ด ์•ก์ˆ˜๋ฅผ ์•ˆ์ชฝ์— ๋†“๊ณ  ๋ฐ˜๋ณตํ•ด์•ผ ์ค‘๋ณต์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. (์กฐํ•ฉ)

์ด๋ ‡๊ฒŒ ํ•ด์•ผ ๋™์ „์ด ํ•˜๋‚˜์”ฉ ๊ณ ๋ ค๋˜๋ฉฐ, ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๋กœ ์ทจ๊ธ‰ํ•จ.

๋ฐ˜๋Œ€๋กœ ํ•œ๋‹ค๋ฉด 5์›์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด 2+3๊ณผ 3+2๋กœ ๋‘ ๋ฒˆ ์„ธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ (์ˆœ์—ด)

 

gpt๊ฐ€ ์ด์ œ ๊ทธ๋ฆผ๋„ ๊ทธ๋ ค์ค€๋‹ค ใ…‹ใ…‹ ๊ทผ๋ฐ ๋ญ” ๊ทธ๋ฆผ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ

 

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

function solution(n, money) {
    var answer = 0;
    let mod = 1000000007;
    // ๊ฒฝ์šฐ์˜ ์ˆ˜...dp?
    // ๊ธˆ์•ก-a์˜ ๊ฒฝ์šฐ + ๊ธˆ์•ก-b์˜ ๊ฒฝ์šฐ + ๊ธˆ์•ก-c์˜ ๊ฒฝ์šฐ + ...
    let dp = new Array(n+1).fill(0);
    dp[0] = 1;
    
    for (let i = 0; i < money.length; i++) {
        for (let j = money[i]; j <= n; j++) {
            dp[j] += dp[j - money[i]] % mod;
        }
    }
    console.log(dp);
    answer = dp[n];
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•