Skip to content

860. Lemonade Change

#295

Problem link

https://leetcode.com/problems/lemonade-change/

Problem Summary

5달러로 레모네이드를 팔 때 거스름돈을 줄 수 있는지 판단하는 문제. 손님은 5, 10, 20 달러 지폐만 사용한다.

Solution

그냥 단순 시뮬레이션.

약간의 그리디도 들어가는데 20달러를 냈을 때 10달러가 있다면 10달러 포함해서 거슬러 주는게 무조건 이득이다.
나머지는 5달러로 거슬러 주고 5달러 지폐가 음수가 되면 False를 리턴하면 된다.

Source Code

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        change5, change10 = 0, 0
        for bill in bills:
            if bill == 5:
                change5 += 1
            elif bill == 10:
                change5 -= 1
                change10 += 1
            else:
                if change10 > 0:
                    change10 -= 1
                    change5 -= 1
                else:
                    change5 -= 3

            if change5 < 0:
                return False
        return True