Skip to content

Commit b5c8317

Browse files
committed
322. Coin Change (반복문 로직 최적화)
1 parent e65811c commit b5c8317

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

coin-change/okyungjin.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,21 @@ def coinChange(self, coins: List[int], amount: int) -> int:
1919
# min_coins[i]: i원을 만드는데 필요한 최소 동전의 개수
2020
min_coins = [NOT_POSSIBLE] * (amount + 1)
2121
min_coins[0] = 0
22+
23+
# 최적화를 위해 정렬
24+
coins.sort()
2225

2326
for cur_amount in range(1, amount + 1):
24-
# coin: 선택한 동전
27+
# coin: 선택한 동전의 금액
2528
for coin in coins:
26-
if cur_amount >= coin:
27-
# 둘 중 더 작은 값으로 업데이트
28-
# 1. 기존에 구한 개수
29-
# 2. 현재 동전을 1개 추가해서 만드는 개수
30-
min_coins[cur_amount] = min(min_coins[cur_amount], min_coins[cur_amount - coin] + 1)
29+
# coins가 정렬되어 있으므로, cur_amount 보다 동전의 금액이 더 크면 이후는 확인 불필요
30+
if coin > cur_amount:
31+
break
32+
33+
# 둘 중 더 작은 값으로 업데이트
34+
# 1. 기존에 구한 개수
35+
# 2. 현재 동전을 1개 추가해서 만드는 개수
36+
min_coins[cur_amount] = min(min_coins[cur_amount], min_coins[cur_amount - coin] + 1)
3137

3238
# 초기화된 값 그대로이면 불가능한 조합이므로 -1 반환
3339
if min_coins[amount] == NOT_POSSIBLE:

0 commit comments

Comments
 (0)