
😎풀이
- 5원을 받은 경우는 그냥 합산
- 10원을 받은 경우 거스름 돈 5원이 없다면
false
- 20원을 받은 경우 다음 규칙을 따름
3-1. 5원 짜리 거스름 돈이 없다면, false
3-2. 10원 짜리 거스름 돈이 없다면, 5원 3개가 있는지 확인 없다면 false
3-3. 10원 짜리 거스름 돈이 있다면, 5원과 10원 각각 결제
function lemonadeChange(bills: number[]): boolean {
let five = 0
let ten = 0
let twenty = 0
for(const bill of bills) {
if(bill === 5) {
five++
} else if(bill === 10) {
ten++
if(five === 0) return false
five--
} else if(bill === 20) {
twenty++
if(five === 0) return false
if(ten === 0) {
if(five < 3) return false
five -= 3
} else {
ten--
five--
}
}
}
return true
};