📖 Scenario: You are helping a cashier who wants to find out how many different ways they can give change for a certain amount using specific coin denominations.
🎯 Goal: Build a program that calculates the total number of ways to make change for a given amount using a list of coin denominations.
📋 What You'll Learn
Create an array called coins with the exact values 1, 2, and 5
Create a variable called amount and set it to 5
Write a function called countWays that takes coins and amount as parameters and returns the total number of ways to make change
Use a dynamic programming approach inside countWays to calculate the number of ways
Print the result of countWays(coins, amount)
💡 Why This Matters
🌍 Real World
Cashiers and vending machines use similar calculations to give change efficiently.
💼 Career
Understanding dynamic programming and counting problems is useful for software engineers working on optimization and financial applications.
Progress0 / 4 steps
1
Create the coin denominations array
Create an array called coins with the exact values 1, 2, and 5.
DSA Typescript
Hint
Use square brackets to create an array and separate the numbers with commas.
2
Set the amount to make change for
Create a variable called amount and set it to 5.
DSA Typescript
Hint
Use const to declare the variable and assign the value 5.
3
Write the function to count ways to make change
Write a function called countWays that takes parameters coins and amount. Use a dynamic programming approach with an array called dp to calculate the total number of ways to make change for amount using coins. Initialize dp[0] to 1. Use nested for loops: the outer loop iterates over coins with variable coin, and the inner loop iterates from coin to amount with variable j. Update dp[j] by adding dp[j - coin]. Return dp[amount] at the end.
DSA Typescript
Hint
Use an array dp to store the number of ways to make each amount. Start with dp[0] = 1 because there is one way to make amount zero (use no coins).
4
Print the total number of ways to make change
Print the result of calling countWays(coins, amount).
DSA Typescript
Hint
Use console.log to print the result of countWays(coins, amount).
Practice
(1/5)
1. What does the "Coin Change Total Number of Ways" problem ask you to find?
easy
A. The total number of ways to make a target amount using given coin denominations.
B. The minimum number of coins needed to make a target amount.
C. The maximum value of coins that can be used to reach the target.
D. The total sum of all coin denominations.
Solution
Step 1: Understand the problem goal
The problem asks for counting all possible ways to make a target amount using given coins.
Step 2: Differentiate from similar problems
Unlike minimum coins problem, this counts combinations, not minimum count.
Final Answer:
The total number of ways to make a target amount using given coin denominations. -> Option A
Quick Check:
Counting ways = total combinations [OK]
Hint: Count combinations, not minimum coins needed [OK]
Common Mistakes:
Confusing with minimum coin count problem
Thinking about maximum coin value instead of ways
Ignoring repeated use of coins
2. Which of the following TypeScript code snippets correctly initializes the DP array for the coin change ways problem for amount 5?
easy
A. const dp = new Array(5).fill(1);
B. const dp = new Array(6).fill(0); dp[0] = 1;
C. const dp = new Array(5).fill(0); dp[1] = 1;
D. const dp = new Array(6).fill(1); dp[0] = 0;
Solution
Step 1: Understand DP array size and initialization
For amount 5, dp array size should be 6 (0 to 5). dp[0] = 1 means one way to make amount 0.
Step 2: Check each option
const dp = new Array(6).fill(0); dp[0] = 1; correctly creates dp of size 6, fills 0, sets dp[0]=1. Others have wrong size or initialization.
Final Answer:
const dp = new Array(6).fill(0); dp[0] = 1; -> Option B
Quick Check:
dp size = amount+1, dp[0] = 1 [OK]
Hint: DP array size = amount + 1, dp[0] = 1 [OK]
Common Mistakes:
Using dp array size equal to amount instead of amount+1
Not setting dp[0] = 1
Filling dp with 1 instead of 0 initially
3. What is the output of the following TypeScript code?
const coins = [1, 2];
const amount = 3;
const dp = new Array(amount + 1).fill(0);
dp[0] = 1;
for (const coin of coins) {
for (let x = coin; x <= amount; x++) {
dp[x] += dp[x - coin];
}
}
console.log(dp[amount]);
medium
A. 3
B. 0
C. 1
D. 2
Solution
Step 1: Trace dp updates for coin 1
dp after coin 1: dp[1]=1, dp[2]=1, dp[3]=1 (only using coin 1)
Step 2: Trace dp updates for coin 2
dp[2]+=dp[0]=1+1=2, dp[3]+=dp[1]=1+1=2; final dp = [1,1,2,2]
Final Answer:
2 -> Option D
Quick Check:
Ways to make 3 with [1,2] = 2 [OK]
Hint: Add ways from smaller amounts using each coin [OK]
Common Mistakes:
Not updating dp correctly inside nested loops
Confusing dp[x] with dp[x - coin]
Missing dp[0] = 1 initialization
4. Find the error in this TypeScript code for coin change ways and select the fix:
const coins = [1, 2, 3];
const amount = 4;
const dp = new Array(amount + 1).fill(0);
dp[0] = 1;
for (let i = 0; i <= coins.length; i++) {
for (let x = coins[i]; x <= amount; x++) {
dp[x] += dp[x - coins[i]];
}
}
console.log(dp[amount]);
medium
A. Use for (const coin of coins) instead of index loop
B. Initialize dp array with 1 instead of 0
C. Change loop to for (let i = 0; i < coins.length; i++)
D. Set dp[amount] = 0 before loops
Solution
Step 1: Identify loop index error
The loop runs i from 0 to coins.length inclusive, causing out-of-bounds access at coins[coins.length].
Step 2: Fix loop condition
Change to i < coins.length to avoid accessing undefined coin.
Final Answer:
Change loop to for (let i = 0; i < coins.length; i++) -> Option C
Quick Check:
Loop index must be less than array length [OK]
Hint: Use < length, not <= length for array loops [OK]
Common Mistakes:
Using <= in for loop causing out-of-bounds error
Not initializing dp[0] = 1
Confusing index and value in loops
5. Given coins = [1, 3, 5] and amount = 7, how many total ways are there to make amount 7 using any number of these coins?
hard
A. 4
B. 8
C. 7
D. 6
Solution
Step 1: Initialize dp array and process coin 1
dp size 8, dp[0]=1. Using coin 1, dp[x]=1 for x=1 to 7.
Step 2: Update dp with coin 3
For x=3 to 7, dp[x]+=dp[x-3]: dp[3]=2, dp[4]=1+dp[1]=2, dp[5]=1+dp[2]=2, dp[6]=1+dp[3]=3, dp[7]=1+dp[4]=3.
Step 3: Update dp with coin 5
For x=5 to 7, dp[5]+=dp[0]=2+1=3, dp[6]+=dp[1]=3+1=4, dp[7]+=dp[2]=3+1=4.
Step 4: Final dp array and answer
Final dp[7] = 4 ways. The combinations are: 7x1, 4x1+1x3, 1x1+2x3, 2x1+1x5.
Final Answer:
4 -> Option A
Quick Check:
Count all combinations with coins [1,3,5] for 7 = 4 [OK]
Hint: Build dp adding ways coin by coin [OK]
Common Mistakes:
Missing some combinations with multiple coins
Confusing permutations with combinations
Incorrect dp updates order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.