860. Lemonade Change (Easy)
당신은 $5 짜리 레몬에이드를 판매한다.
손님들은 레몬에이드를 주문하기 위해서 줄을 서 있으며 input 값인 bills 에는 손님이 얼마짜리 지폐를 들고 레몬에이드를 사려고 기다리고 있는지 주어진다.
손님은 한 번에 하나씩 주문할 수 있으며, 손님들이 주문시에 지불할 수 있는 지폐는 $5, $10, $20다.
당신은 장사를 시작하기 전 거스름돈은 따로 가지고 있지 않아 $0 이며, 손님이 레몬에이드를 구매하며 지불한 돈이 곧 거스름돈으로 활용된다.
이때, 당신이 모든 고객에게 정확한 거스름돈을 지불할 수 있는지 여부에 대해서 코드를 짜시오.
문제풀이
손님이 레몬에이드를 구매할 때, 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 = 0, 0 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
'온라인 코딩 테스트 문제 풀이 > LeetCode 문제 풀이' 카테고리의 다른 글
Python으로 푸는 LeetCode 24. Swap Nodes in Pairs (0) | 2019.03.23 |
---|---|
Python으로 푸는 LeetCode 121. Best Time to Buy and Sell Stock (Easy) (0) | 2019.03.20 |
Python으로 푸는 LeetCode 344. Reverse String (Easy) (0) | 2019.03.19 |
Python으로 푸는 LeetCode 877. Stone Game (0) | 2019.02.24 |