File tree 1 file changed +36
-0
lines changed
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