[LeetCode] Lemonade Change

아르당·2026년 3월 4일

LeetCode

목록 보기
183/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

레몬에이드 가판대에서 레몬에이드 한 잔에 $5를 한다. 고객들이 줄을 서서 차례대로(bills에 적힌 순서) 레몬에이드를 주문한다. 각 고객은 레몬에이드를 한 잔씩만 구매하고 $5, $10, $20 지폐로 결정한다. 고객 한 명당 최종 결제 금객이 $5가 되도록 정확한 거스름돈을 제공해야 한다.

정수 배열 bills가 주어졌을 때, bills[i]는 i번째 고객이 지불한 금액이고 모든 고객에게 정확한 잔돈을 제공할 수 있다면 true, 그렇지 않다면 false를 반환해라.

Example

#1
Input: bills = [5, 5, 5, 10, 20]
Output: true
Explanation:
처음 세 명의 고객에서 $5 세장을 받는다.
네번째 고객에서 $10을 받고, $5를 줬다.
다섯번째 고객에서 $10와 $5를 줬다.
모든 고객에게 정확한 잔돈이 지급되어서 true를 반환한다.

#2
Input: bills = [5, 5, 10, 10, 20]
Output: false
Explanation:
처음 두 명의 고객에서 $5 두장을 받는다.
다음 두 명의 고객에서 $10을 받고, $5를 줬다.
마지막 고객에게 $10 두 장 밖에 없어서 $15를 주지 못 했다.
모든 고객이 정확한 거스름돈을 받지 못해서, 답은 false다.

Constraints

  • 1 <= bills.length <= 10^5
  • bills[i]는 5, 10, 20뿐이다.

Solved

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five = 0;
        int ten = 0;

        for(int bill : bills){
            if(bill == 5){
                five++;
            }else if(bill == 10){
                if(five == 0){
                    return false;
                }

                five--;
                ten++;
            }else{
                if(ten > 0 && five > 0){
                    ten--;
                    five--;
                }else if(five >= 3){
                    five -= 3;
                }else{
                    return false;
                }
            }
        }

        return true;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글