📖 Scenario: You are helping a cashier machine that needs to give change using the fewest coins possible. The machine has coins of certain values, and you want to find the minimum number of coins needed to make a specific amount.
🎯 Goal: Build a program that finds the minimum number of coins needed to make a given amount using a list of coin values.
📋 What You'll Learn
Create an array called coins with the values 1, 5, and 10
Create a variable called amount and set it to 12
Write a function called minCoins that takes coins and amount and returns the minimum number of coins needed
Print the result of calling minCoins(coins, amount)
💡 Why This Matters
🌍 Real World
Cashier machines, vending machines, and payment apps use this logic to give change efficiently.
💼 Career
Understanding dynamic programming and optimization problems is useful for software engineers working on finance, retail, or algorithmic challenges.
Progress0 / 4 steps
1
Create the coins array
Create an array called coins with the values 1, 5, and 10.
DSA Typescript
Hint
Use square brackets to create an array and separate values with commas.
2
Set the amount variable
Create a variable called amount and set it to 12.
DSA Typescript
Hint
Use const to create a variable that does not change.
3
Write the minCoins function
Write a function called minCoins that takes coins and amount as parameters and returns the minimum number of coins needed to make the amount. Use a simple dynamic programming approach with an array called dp where dp[i] stores the minimum coins for amount i. Initialize dp[0] to 0 and others to a large number. Use a for loop with variable i from 1 to amount, and inside it, a for loop with variable coin over coins to update dp[i].
DSA Typescript
Hint
Use two loops: one for amounts from 1 to amount, and one for each coin. Update dp[i] with the minimum coins needed.
4
Print the minimum coins needed
Print the result of calling minCoins(coins, amount).
DSA Typescript
Hint
Use console.log(minCoins(coins, amount)) to print the result.
Practice
(1/5)
1. What does the "Coin Change Minimum Coins" problem ask you to find?
easy
A. The maximum amount of money you can make with given coins
B. The total number of different coins available
C. The least number of coins needed to make a given amount
D. The sum of all coin values
Solution
Step 1: Understand the problem goal
The problem asks for the minimum number of coins needed to make a specific amount.
Step 2: Differentiate from other coin problems
It is not about counting coins or maximum amount, but minimizing coin count for exact amount.
Final Answer:
The least number of coins needed to make a given amount -> Option C
Quick Check:
Minimum coins = least number needed [OK]
Hint: Focus on minimum coins to form amount, not total coins [OK]
Common Mistakes:
Confusing minimum coins with total coin types
Thinking problem asks for maximum amount
Ignoring the exact amount requirement
2. Which of the following is the correct TypeScript function signature for a coin change minimum coins function?
easy
A. function minCoins(coins: number[], amount: number): number
B. function minCoins(amount: number, coins: number[]): void
C. function minCoins(coins: number, amount: number[]): number[]
D. function minCoins(coins: string[], amount: string): number
Solution
Step 1: Check parameter types and order
The function should take an array of coin values (number[]) and an amount (number).
Step 2: Check return type
The function returns a number representing minimum coins needed.
Final Answer:
function minCoins(coins: number[], amount: number): number -> Option A
Quick Check:
Correct types and return number [OK]
Hint: Coins array first, amount second, returns number [OK]
Common Mistakes:
Swapping parameter order
Using wrong types like string instead of number
Returning void or array instead of number
3. What is the output of the following TypeScript code?
function minCoins(coins: number[], amount: number): number {
const dp = Array(amount + 1).fill(amount + 1);
dp[0] = 0;
for (let i = 1; i <= amount; i++) {
for (const coin of coins) {
if (coin <= i) {
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
}
}
}
return dp[amount] > amount ? -1 : dp[amount];
}
console.log(minCoins([1, 2, 5], 11));
medium
A. 2
B. 3
C. -1
D. 5
Solution
Step 1: Understand dp array initialization
dp array size is 12 (0 to 11), initialized with 12 (amount+1), dp[0] = 0.
Step 2: Calculate dp values for amount 11
Using coins 1,2,5, minimum coins for 11 is 3 (5+5+1).
Final Answer:
3 -> Option B
Quick Check:
Minimum coins for 11 with [1,2,5] = 3 [OK]
Hint: Use dp array to track min coins for each amount [OK]
Common Mistakes:
Returning dp[amount] without checking if > amount
Misunderstanding dp initialization
Confusing coin values and indices
4. Identify the bug in this TypeScript code for minimum coins:
function minCoins(coins: number[], amount: number): number {
const dp = new Array(amount + 1).fill(0);
dp[0] = 0;
for (let i = 1; i <= amount; i++) {
dp[i] = Infinity;
for (const coin of coins) {
if (coin < i) {
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
}
}
}
return dp[amount] === Infinity ? -1 : dp[amount];
}
medium
A. The condition should be coin <= i, not coin < i
B. dp array should be initialized with Infinity, not 0
C. dp[0] should be Infinity, not 0
D. Return statement should check dp[amount] > Infinity
Solution
Step 1: Check coin usage condition
The condition 'coin < i' skips cases where coin equals i, missing exact matches.
Step 2: Correct condition to include equal coins
Change condition to 'coin <= i' to allow using coin equal to current amount.
Final Answer:
The condition should be coin <= i, not coin < i -> Option A
Quick Check:
Include coin equal to amount [OK]
Hint: Use <= to include exact coin matches [OK]
Common Mistakes:
Using < instead of <= in coin check
Initializing dp array incorrectly
Wrong return condition check
5. Given coins = [2, 3, 7] and amount = 13, what is the minimum number of coins needed? Use the coin change minimum coins approach.
hard
A. -1
B. 4
C. 2
D. 3
Solution
Step 1: Try combinations to form 13
Possible combos: 7+3+3 = 3 coins, 2+2+2+7 = 4 coins, etc.
Step 2: Identify minimum coins
Minimum coins is 3 using 7, 3, and 3.
Final Answer:
3 -> Option D
Quick Check:
7+3+3 = 13 with 3 coins [OK]
Hint: Try largest coins first to minimize count [OK]
Common Mistakes:
Assuming no solution (-1) without checking combos
Counting coins incorrectly
Ignoring combinations with repeated coins
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.