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๋ก ๋ ๋ฒ ์ธ์ด์ง ์ ์์ (์์ด)
๋์ ํ์ด
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;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.3 : ํ์ ํฐํธ๋ฆฌ๊ธฐ (0) | 2025.05.09 |
---|---|
[Javascript/PGS] Lv.4 : ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๊ฐฏ์ (DP) (0) | 2025.05.08 |
[Javascript/PGS] Lv.3 : ๋ค๋จ๊ณ ์นซ์ ํ๋งค (0) | 2025.05.08 |
[Javascript/PGS] Lv.3 : [1์ฐจ] ์ ํ๋ฒ์ค (2018 KAKAO) (0) | 2025.05.08 |
[Javascript/PGS] Lv.2 : n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2025.05.08 |