본문으로 바로가기

860. Lemonade Change (Easy)

당신은 $5 짜리 레몬에이드를 판매한다.

손님들은 레몬에이드를 주문하기 위해서 줄을 서 있으며 input 값인 bills 에는 손님이 얼마짜리 지폐를 들고 레몬에이드를 사려고 기다리고 있는지 주어진다.

손님은 한 번에 하나씩 주문할 수 있으며, 손님들이 주문시에 지불할 수 있는 지폐는 $5, $10, $20다. 

당신은 장사를 시작하기 전 거스름돈은 따로 가지고 있지 않아 $0 이며, 손님이 레몬에이드를 구매하며 지불한 돈이 곧 거스름돈으로 활용된다.

이때, 당신이 모든 고객에게 정확한 거스름돈을 지불할 수 있는지 여부에 대해서 코드를 짜시오.

leetcode에서 푼 문제 리스트 보기

leetcode에서 문제 보기

github에서 코드 보기

문제풀이

손님이 레몬에이드를 구매할 때, 5달러 지폐가 없거나 5달러 지폐로 구매하는 손님이 아니면 거스름돈을 지불할 수가 없다.

손님이 $5, $10, $20달러로 구매할 때에 거스름돈으로 지불 가능한 조합을 살펴보면 다음과 같다.

$5일 경우 : 거스름돈이 필요 없다.

$10일 경우 : $5 거스름돈이 필요하다.

$20일 경우 : 거스름돈은 $15가 필요하며, $10 + $5 로 주거나, $5 * 3 로 주는 방법이 있다. $10를 거스름돈으로 쓸 수 있는 경우는, 손님이 $20 내고 레몬에이드를 주문한 경우 뿐이므로 $10를 거스름돈으로 쓸 수 있을때 먼저 활용해야 한다. $5 *2 으로 $10를 충분히 대처가 가능하기 때문에 $10가 없더라도 $5달러를 조합해서 충분히 지불이 가능하다. 그러므로,  $10 + $5 와  $5 * 3 로 모두 지불이 가능한 경우는 $10 + $5 으로 먼저 지불할 수 있도록 해야 모든 예제를 통과할 수 있다.

파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def lemonadeChange(bills):
    bill5, bill10 = 00
 
    for cur in bills:
        # 5달러가 아니거나 5달러가 아닌데 5달러 지폐가 없으면 False
        if cur != 5 and not bill5:
            return False
 
        if cur == 5:
            bill5 += 1
        elif cur == 10:
            bill5 -= 1
            bill10 += 1
        elif cur == 20:
            if 0 < bill10:
                bill10 -= 1
                bill5 -= 1
            elif bill5 > 3:
                bill5 -= 3
            else:
                return False
    return True
cs

#LeetCode 860. lemonadeChange #860 lemonadeChange #lemonadeChange python #파이썬 lemonadeChange #860 lemonadeChange python