Skip to content

Commit 267b872

Browse files
committed
feat: add coin change
1 parent aa5706c commit 267b872

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

โ€Žcoin-change/kangdaia.pyโ€Ž

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def coinChange(self, coins: list[int], amount: int) -> int:
3+
"""amount๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์ฝ”์ธ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
4+
๋™์ผํ•œ ๋™์ „์„ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•ด๋„ ๋จ
5+
6+
๋ฐฉ๋ฒ•:
7+
- ๋ฐฉ๋ฒ• ์ˆ˜๋ฅผ ๋ณด๊ณ  dp๋กœ ํ’€๊ธฐ๋กœ ํ•จ. ๊ธˆ์•ก์ด dp ๋‹จ๊ณ„๊ฐ€ ๋จ.
8+
๋ชจ๋“  ๊ธˆ์•ก๋ณ„๋กœ, ์ฝ”์ธ ๋ชฉ๋ก์„ ๋Œ๋ฉด์„œ, ์ฝ”์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด amount-coinํ•œ ๊ธˆ์•ก์˜ ๋ฐฉ๋ฒ•์ˆ˜ + 1๊ณผ ๋น„๊ตํ•˜๊ธฐ
9+
-> ์กฐํ•ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•˜์ง€? ์—์„œ dp init์„ 0์ด ์•„๋‹ˆ๋ผ inf๋กœ ํ•ด์•ผ, ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ .
10+
-> ๊ทธ๋ž˜์„œ min ๋น„๊ต๋ฅผ ํ˜„์žฌ ์ธ๋ฑ์Šค dp๊ฐ’๊ณผ i-coin์˜ dp ๊ฐ’ + 1์œผ๋กœ ํ•จ
11+
coin์ด ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ๋ผ, ์ •๋ ฌํ•ด, coin ๊ฐ’์ด amount๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด pass
12+
13+
Args:
14+
coins (list[int]): ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ „ ๋ชฉ๋ก
15+
amount (int): ๋ชฉํ‘œํ•˜๋Š” ๊ธˆ์•ก
16+
17+
Returns:
18+
int: ๊ธˆ์•ก์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ „๋“ค ๋ฐฉ์•ˆ ์ˆ˜
19+
"""
20+
dp = [float("inf")] * (amount + 1)
21+
dp[0] = 0
22+
coins.sort()
23+
for coin in coins:
24+
if coin > amount:
25+
continue
26+
for i in range(coin, amount + 1):
27+
dp[i] = min(dp[i], 1 + dp[i - coin])
28+
return dp[amount] if dp[amount] != float("inf") else -1

0 commit comments

Comments
ย (0)