๋ฌธ์ ์ค๋ช
Finn์ ํธ์์ ์์ ์ผ๊ฐ ์๋ฅด๋ฐ์ดํธ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ผ๊ฐ์ ์๋์ด ๋๋ฌด ์์ด ์ฌ์ฌํ Finn์ ์๋๋ค๊ป ๊ฑฐ์ค๋ฆ๋์ n ์์ ์ค ๋ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ธฐ๋ก ํ์์ต๋๋ค.
์๋ฅผ ๋ค์ด์ ์๋๊ป 5์์ ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ๊ณ 1์, 2์, 5์์ด ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก 5์์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์์ต๋๋ค.
- 1์์ 5๊ฐ ์ฌ์ฉํด์ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
- 1์์ 3๊ฐ ์ฌ์ฉํ๊ณ , 2์์ 1๊ฐ ์ฌ์ฉํด์ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
- 1์์ 1๊ฐ ์ฌ์ฉํ๊ณ , 2์์ 2๊ฐ ์ฌ์ฉํด์ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
- 5์์ 1๊ฐ ์ฌ์ฉํด์ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ๋ ๊ธ์ก n๊ณผ Finn์ด ํ์ฌ ๋ณด์ ํ๊ณ ์๋ ๋์ ์ข ๋ฅ money๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, Finn์ด n ์์ ๊ฑฐ์ฌ๋ฌ ์ค ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋ด ํ์ด
๋ด๊ฐ ์๊ฐํ๊ธฐ๋ ๋๋ฌด๋๋ฌด ์ด๋ ค์ด๋ฐ ๋ง์ ์ฝ๋๋ณด๊ณ ํ๋ํ๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ๋ค๋ณด๋ฉด ์ํ,,,ํ๊ฒ ๋๋ ํน์ ์ DP ๋ฌธ์ ์๋ค. DP ๋ฌธ์ ๋ง์ด ํ์ด๋ด์ผ๊ฒ ๋ค.
n = 5, money = [1, 2, 5] ์ผ ๋,
0์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[0]) ⇒ 1
1์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[1]) ⇒ dp[0] : 1
2์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[2]) ⇒ dp[1] + dp[0] : 2
3์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[3]) ⇒ dp[2] + dp[1] : 2
4์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[4]) ⇒ dp[3] + dp[2] : 3
5์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[5]) ⇒ dp[4] + dp[3] + dp[0] : 4
n = 5, money = [1, 2, 3, 4, 5] ์ผ ๋,
0์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[0]) ⇒
1์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[1]) ⇒ dp[0] : 1
2์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[2]) ⇒ dp[1] + dp[0] : 2
3์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[3]) ⇒ dp[2] + dp[1] + dp[0] : 3
4์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[4]) ⇒ dp[3] + dp[2] + dp[1] + dp[0] : 5
5์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒฝ์ฐ(dp[5]) ⇒ dp[4] + dp[3] + dp[2] + dp[1] + dp[0] : 7
#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> money) {
vector<int> dp = vector<int>(n+1, 0);
dp[0] = 1;
for(const auto m : money)
{
for(int i = m; i <= n; ++i)
{
dp[i] += dp[i-m];
}
}
return dp[n];
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ(C++) (0) | 2023.07.28 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ํ ์ด๋ธ ํด์ ํจ์(C++) (0) | 2023.07.27 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - [์นด์นด์ค ์ธํด] ์์ ์ต๋ํ(C++) (0) | 2023.07.24 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์(C++) (0) | 2023.07.23 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 -ํ๋ ธ์ด์ ํ(C++) (2) | 2023.07.22 |