860. Lemonade Change
문제 설명
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 으로 해도 됨,,
위에 첫번째 인덱스의 원소를 따로 처리 해 줄 필요도 없었다.
Author And Source
이 문제에 관하여(860. Lemonade Change), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mm723/860.-Lemonade-Change저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)