At a lemonade stand, each lemonade costs $5.
Customers are standing in a queue to buy from you and order one at a time (in the order specified by bills).
Each customer will only buy one lemonade and pay with either a $5, $10, or $20 bill.
You must provide the correct change to each customer so that the net transaction is that the customer pays $5.
Note that you do not have any change in hand at first.
Given an integer array bills where bills[i] is the bill the ith customer pays, return true if you can provide every customer with the correct change, or false otherwise.
Example 1:
Input: bills = [5,5,5,10,20]
Output: true
Explanation:
From the first 3 customers, we collect three $5 bills in order.
From the fourth customer, we collect a $10 bill and give back a $5.
From the fifth customer, we give a $10 bill and a $5 bill.
Since all customers got correct change, we output true.
Example 2:
Input: bills = [5,5,10,10,20]
Output: false
Explanation:
From the first two customers in order, we collect two $5 bills.
For the next two customers in order, we collect a $10 bill and give back a $5 bill.
For the last customer, we can not give the change of $15 back because we only have two $10 bills.
Since not every customer received the correct change, the answer is false.
난이도: easy
bills = 손님들이 내는 돈의 순서
순서대로 레모네이드를 판매하는데 거스름돈을 지불하지 못하는 경우 false
를 리턴
정상적으로 판매 가능하다면 true
리턴
거스름돈을 낼 수 있는 모든 경우의 수를 확인하면 되는 방식이고, 거스름돈이 큰 순서부터 내보내면 된다Greedy
알고리즘이며, 경험상 거스름돈을 내는 문제는 대부분이 Greedy로 풀이 했었다
var lemonadeChange = function(bills) {
let five = 0;
let ten = 0;
for (let i = 0; i < bills.length; i++) {
const bill = bills[i];
// 20일 경우
if (bill === 20) {
if (ten !== 0) {
ten--;
five--;
if (five < 0) {
return false
}
} else {
five -= 3;
if (five < 0) {
return false
}
}
}
// 10일 경우
if (bill === 10) {
ten++;
five--;
if (five < 0) {
return false;
}
}
// 5일 경우
if (bill === 5) {
five++
}
}
return true
};
'Algorithm' 카테고리의 다른 글
[Leetcode] 1160. Find Words That Can Be Formed by Characters (0) | 2022.03.06 |
---|---|
[Leetcode] 605. Can Place Flowers (0) | 2022.03.05 |
[Leetcode] 155. Min Stack (0) | 2022.03.05 |
[Leetcode] 1306. Jump Game III (0) | 2022.03.04 |
[Leetcode] 674. Longest Continuous Increasing Subsequence (0) | 2022.03.04 |