Skip to content

Commit f6d75c6

Browse files
committed
Solution: Coin Change
1 parent 7491493 commit f6d75c6

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

โ€Žcoin-change/flynn.mdโ€Ž

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
## Description
2+
3+
DP๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
4+
5+
๋ฐฐ์—ด `memo`๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
6+
7+
```
8+
memo[i] = i์›์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜
9+
๊ฐ ์›์†Œ์˜ ๊ฐ’์€ ์ดˆ๊ธฐ๊ฐ’์€ 10^4 + 1๋กœ ์„ค์ •ํ•จ (max(amount) / min(coin) + 1)
10+
```
11+
12+
์•ž์„œ ์ •์˜ํ•œ ๋ฐฐ์—ด `memo`๋ฅผ ์ด์šฉํ•˜๋ฉด ์•„๋ž˜ ์ ํ™”์‹์ด ์„ฑ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.
13+
14+
```
15+
memo[i] = min(memo[i], memo[i - coin] + 1) if i - coin >= 0
16+
```
17+
18+
## Big-O
19+
20+
๋ฐฐ์—ด `coins`์˜ ํฌ๊ธฐ๋ฅผ `N`, ์ •์ˆ˜ `amount`์˜ ํฌ๊ธฐ๋ฅผ `K`๋ผ๊ณ  ํ–ˆ์„ ๋•Œ,
21+
22+
Time complexity: `O(N * M)`
23+
24+
Space complexity: `O(M)`
25+
26+
---
27+
28+
```cpp
29+
class Solution {
30+
public:
31+
int coinChange(vector<int>& coins, int amount) {
32+
int MAX = 10000 + 1;
33+
vector<int> memo(amount + 1, MAX);
34+
memo[0] = 0;
35+
36+
for (int i = 1; i <= amount; i++) {
37+
for (auto coin : coins) {
38+
if (i - coin >= 0) {
39+
memo[i] = min(memo[i], memo[i - coin] + 1);
40+
}
41+
}
42+
}
43+
44+
return memo[amount] == MAX ? -1 : memo[amount];
45+
}
46+
};
47+
```

0 commit comments

Comments
ย (0)