ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์ค๋ช
๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ๋ ๊ธ์ก n๊ณผ ํ์ฌ ๋ณด์ ํ๊ณ ์๋ ๋์ ์ข ๋ฅ money๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, Finn์ด n์์ ๊ฑฐ์ฌ๋ฌ ์ค ๋ฐฉ๋ฒ์ ์ return
[์ ํ ์ฌํญ]
- n์ 100,000 ์ดํ์ ์์ฐ์
- ํํ ๋จ์๋ 100์ข ๋ฅ ์ดํ
- ๋ชจ๋ ํํ๋ ๋ฌดํํ๊ฒ ์๋ค๊ณ ๊ฐ์
- ์ ๋ต์ด ์ปค์ง ์ ์์ผ๋, 1,000,000,007๋ก ๋๋ ๋๋จธ์ง return
์ ์ถ๋ ฅ ์์
| n | money | result |
| 5 | [1,2,5] | 4 |
ํ์ด ๋ฐฉ๋ฒ
DP ๋ฐฐ์ด ์ค์ ์ ์ ํด์ฃผ์ด์ผ ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์..
DP = i์ ๊ฑฐ์ค๋ฆ๋์ ๋ฐ์ ์ ์๋ ํ์
์์ ์์๋ฅผ ์ฌ์ฉํด์ Bottom-Up์ผ๋ก ๊ตฌํด๋ณด๋ฉด,
1) ๊ฑฐ์ค๋ฆ๋ 0์ ์๋ฌด๊ฒ๋ ๊ฑฐ์ฌ๋ฌ ์ฃผ์ง ์๋ ๊ฒ์ผ๋ก 1๋ก ์ฑ์ฐ๊ธฐ
| 0์ | 1์ | 2์ | 3์ | 4์ | 5์ |
| 1 | 0 | 0 | 0 | 0 | 0 |
2) 1์์ ์ด์ฉํด์ 1์~5์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๋ฉด,
1์ = 1, 2์ = 1+1, 3์ = 1+1+1, 4์ = 1+1+1+1, 5์ = 1+1+1+1+1 โถ๏ธ ๋ชจ๋ 1๊ฐ์ฉ ์กด์ฌ
| 0์ | 1์ | 2์ | 3์ | 4์ | 5์ |
| 1 | 1 | 1 | 1 | 1 | 1 |
3) 2์์ ์ด์ฉํด์ 2~5์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๋ฉด,
2์ = 0+2/1+1, 3์ = 1+2/1+1+1, 4์ = 2+2/2+1+1/1+1+1+1, 5์ = 1+2+2/1+1+1+2/1+1+1+1+1
| 0์ | 1์ | 2์ | 3์ | 4์ | 5์ |
| 1 | 1 | 1+1=2 | 1+1=2 | 1+2=3 | 1+2=3 |
4) 5์์ ์ด์ฉํด์ 5์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๋ฉด,
5์ = 5/1+2+2/1+1+1+2/1+1+1+1+1
| 0์ | 1์ | 2์ | 3์ | 4์ | 5์ |
| 1 | 1 | 2 | 2 | 3 | 3+1=4 |
์ฌ๊ธฐ์ ๊ท์น์ด ๋ฐ์ํจ
DP[i] = DP[i] + DP[i-ํํ]
์ฆ, Bottom-Up ๋ฐฉ์์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒฝ์ฐ์ ์ ํฉ๊ณ ๊ตฌํ ์ ์์
์ฝ๋
function solution(n, money) {
const DIV = 1000000007; // ๋๋ ์
// ๊ฑฐ์ค๋ฆ๋ DP ๋ฐฐ์ด: DP[๊ฑฐ์ค๋ฆ๋] = ๊ฑฐ์ค๋ฆ๋์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒฝ์ฐ์ ์
const dp = Array.from({length: n+1}, () => 0);
dp[0] = 1; // ์๋ฌด๊ฒ๋ ๊ฑฐ์ฌ๋ฌ ์ฃผ์ง ์๋ ๊ฒฝ์ฐ์ ์์ธ 1 ๋ฃ๊ธฐ
for(const m of money) {
for(let c=m; c<=n; c++) {
dp[c] += (dp[c-m]%DIV); // DP ๊ท์น ์ ์ฉ
}
}
return dp[n];
}
์ฐธ๊ณ ์ฌ์ดํธ
https://review-answer.tistory.com/27
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฑฐ์ค๋ฆ๋_Java
๋ฌธ์ ๋งํฌhttps://school.programmers.co.kr/learn/courses/30/lessons/12907 ํ๋ก๊ทธ๋๋จธ์ค์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ
review-answer.tistory.com
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค-60059]์๋ฌผ์ ์ ์ด์ (0) | 2026.06.29 |
|---|---|
| [SWEA-2001] ํ๋ฆฌ ํด์น (0) | 2026.06.23 |
| [ํ๋ก๊ทธ๋๋จธ์ค-258711] ๋๋๊ณผ ๋ง๋ ๊ทธ๋ํ (0) | 2026.05.27 |
| [ํ๋ก๊ทธ๋๋จธ์ค-49191] ์์ (0) | 2026.05.17 |
| [ํ๋ก๊ทธ๋๋จธ์ค-1843] ์ฌ์น์ฐ์ฐ (0) | 2026.05.02 |