Leetcode Java Lemonade Change
업데이트:
문제
코드
class Solution {
public boolean lemonadeChange(int[] bills) {
int[] changes = new int[] { 0, 0 };
for (int bill : bills) {
if (bill == 5) {
changes[0]++;
} else if (bill == 10) {
changes[0]--;
changes[1]++;
} else if (changes[1] > 0) {
changes[1]--;
changes[0]--;
} else {
changes[0] -= 3;
}
if (changes[0] < 0) {
return false;
}
}
return true;
}
}
결과
설명
- 한 잔에 5달러인 레모네이드를 bills 순서대로 판매할 때, 거스름돈이 없이 판매하여 순차적으로 거스름돈을 반환할 수 있는지 검증하는 문제이다.
- 고객은 한 번에 한 잔의 레모네이드를 구매하며 5, 10, 20 달러 지폐를 지불한다.
-
changes는 5달러와 10달러의 거스름돈의 수를 저장할 배열로, 두 값을 0으로 초기화한다.
- bills를 bill에 넣어 아래를 반복한다.
- bill이 5인 경우, 5달러의 거스름돈이 생겼으므로 5달러의 개수를 증가시킨다.
- 위가 아니면서 bill이 10인 경우, 5달러의 거스름돈을 제공하고 10 달러의 거스름돈이 생겼으므로 5달러의 개수를 증가시키고 10달러의 수를 감소시킨다.
- 위가 아니면서 changes의 두 번째 값인 10달러의 거스름돈이 1개 이상인 경우, 20달러 지폐를 받았으므로 5달러와 10달러를 하나씩 감소시킨다.
- 위가 아니면 10달러의 거스름돈이 없으므로, 5달러의 수를 3개 감소시킨다.
- 5달러의 수가 0 미만인 경우 거스름돈 한도를 초과하였으므로, false를 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 순차적으로 거스름돈을 반환하였으므로 true를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기