Skip to content

Commit 6b14f4f

Browse files
making change
1 parent dd903f9 commit 6b14f4f

1 file changed

Lines changed: 11 additions & 31 deletions

File tree

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,12 @@
1-
from typing import List
2-
3-
41
def ways_to_make_change(total: int) -> int:
5-
"""
6-
Given access to coins with the values 1, 2, 5, 10, 20, 50, 100, 200, returns a count of all of the ways to make the passed total value.
7-
8-
For instance, there are two ways to make a value of 3: with 3x 1 coins, or with 1x 1 coin and 1x 2 coin.
9-
"""
10-
return ways_to_make_change_helper(total, [200, 100, 50, 20, 10, 5, 2, 1])
11-
12-
13-
def ways_to_make_change_helper(total: int, coins: List[int]) -> int:
14-
"""
15-
Helper function for ways_to_make_change to avoid exposing the coins parameter to callers.
16-
"""
17-
if total == 0 or len(coins) == 0:
18-
return 0
19-
20-
ways = 0
21-
for coin_index in range(len(coins)):
22-
coin = coins[coin_index]
23-
count_of_coin = 1
24-
while coin * count_of_coin <= total:
25-
total_from_coins = coin * count_of_coin
26-
if total_from_coins == total:
27-
ways += 1
28-
else:
29-
intermediate = ways_to_make_change_helper(total - total_from_coins, coins=coins[coin_index+1:])
30-
ways += intermediate
31-
count_of_coin += 1
32-
return ways
2+
coins = [1, 2, 5, 10, 20, 50, 100, 200]
3+
4+
dp = [0] * (total + 1)
5+
6+
dp[0] = 1
7+
8+
for coin in coins:
9+
for i in range(coin, total + 1):
10+
dp[i] += dp[i - coin]
11+
12+
return dp[total]

0 commit comments

Comments
 (0)