5달러의 레모네이드를 판매하는 가판대가 있다. 손님들은 당신에게서 구매하기 위해 대기하고 있고(queue), 한 번에 한 명씩 주문을 받을 수 있다. 각 손님들은 한 잔의 레모네이드를 구매할 때, $5,$10,$20 지폐 단위 중 하나로 지불한다.
당신은 반드시 5달러로 판매해야 하고, 손님들에게 올바른 거스름 돈을 주어야 한다. 판매 전 여분의 거스름 돈은 존재하지 않는다.
정수형 배열 bills가 주어진다. (bills[i]는 i번째 손님이 낸 금액이다.)
올바른 거스름 돈을 줄 수 있다면 true, 없으면 false를 출력하라.
일단 처음부터 확인하기,,, 해시 테이블로 가지고 있는 거스름 돈을 입력하고 $10,$20 손님을 마주칠 때 거스름 돈 있나 검색하기,,,?
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int change[3]={0}; // change[0]=$5,[1]=$10,[2]=$20
if(bills[0]==5) change[0]++;
else if(bills[0]==10) change[1]++;
else change[2]++;
for(auto itr = bills.begin()+1; itr!=bills.end(); itr++){
if(*itr == 5){
change[0]++;
}
else if(*itr == 10) {
if(change[0]>0) change[0]--;
else return false;
change[1]++;
}
else{
if(change[0]>0 && change[1]>0) {
change[0]--;
change[1]--;
}
else if(change[0]>2) change[0]-=3;
else return false;
change[2]++;
}
}
return true;
}
};
굳이 배열 안 쓰고 int five, int ten 으로 해도 됨,,
위에 첫번째 인덱스의 원소를 따로 처리 해 줄 필요도 없었다.