File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < vector>
2+ #include < algorithm>
3+ using namespace std ;
4+
5+ /*
6+ - dp[i]: ๊ธ์ก i๋ฅผ ๋ง๋๋ ์ต์ ์ฝ์ธ์
7+ - ์ด๊ธฐ๊ฐ
8+ - dp[0] = 0
9+ - ๊ทธ ์ธ์๋ amount + 1 (๋๋ฌํ ์ ์๋ ๊ฐ)์ผ๋ก ์ด๊ธฐํ
10+ - ํ์ฌ ๊ธ์ก i๋ฅผ ๋ง๋ค๊ธฐ ์ํด์
11+ ์ด์ ๊ธ์ก์ธ i - c๋ฅผ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ ์ฝ์ธ c๋ฅผ ๋ ์ผ์ ๋ ์ต์๊ฐ์ ๊ฐฑ์ ํจ
12+ ์์) coins = [1, 2, 5], i = 3์ผ ๋
13+ c = 1 -> 3 >= 1 ์ด๋ฏ๋ก dp[3] = min(dp[3], dp[2] + 1) ๊ฐฑ์
14+ c = 2 -> 3 >= 2 ์ด๋ฏ๋ก dp[3] = min(dp[3], dp[1] + 1) ๊ฐฑ์
15+ c = 5 -> 3 < 5 ์ด๋ฏ๋ก ๊ฑด๋๋
16+ => i - c๊ฐ ์์๋ฉด ๋ฐฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฏ๋ก i >= c์ผ๋๋ง ์ฐ์ฐ์ฐ
17+ */
18+ class Solution {
19+ public:
20+ int coinChange (vector<int >& coins, int amount) {
21+ // dp ํ
์ด๋ธ ์ด๊ธฐํ
22+ vector<int > dp (amount + 1 , amount + 1 );
23+ dp[0 ] = 0 ;
24+
25+ // bottom up ์ฐ์ฐ
26+ for (int i = 1 ; i <= amount; ++i) {
27+ for (int c : coins) {
28+ if (i >= c) {
29+ dp[i] = min (dp[i], dp[i - c] + 1 );
30+ }
31+ }
32+ }
33+
34+ return (dp[amount] > amount) ? -1 : dp[amount];
35+ }
36+ };
You canโt perform that action at this time.
0 commit comments