🚩 문제 풀러 가기
📄 접근 방법
그리디
더보기
문제 해석
- 우리가 파는 레모네이트 가격은 $5입니다. 고객들은 무조건 레모네이드 한 개만 주문합니다.
- 고객들이 지불하는 돈은 $5, $10, $20입니다.
- 다만, 우리가 돈을 거슬러줘야할 때는 고객들이 지불했던 돈으로만 가능합니다.
- 모두에게 거슬러 줄 수 있다면 true를 반환하고, 한 명이라도 거슬러주지 못한다면 false를 반환합니다.
1. 거슬러줄 돈을 저장할 collect 빈 객체를 선언합니다.
2. 받은 돈이
- $5일 때, $5가 없다면 1을 할당하고, 있다면 +1을 합니다.
- $10일 때, $5가 있다면 -1 합니다. 그리고 $10가 없다면 1을 할당하고, 있다면 +1을 합니다.
$5가 없으면 거슬러줄 수 없으므로 false를 반환합니다. - $20일 때는 두 가지 방법이 있습니다.
1. $5, $10을 각각 -1 하기
2. $5를 -3 하기
이 두 가지 방법을 위의 방법처럼 해줍니다.
3. 위 조건들을 모두 통과하면 모두에게 거슬러줄 수 있는 것이므로 true를 반환합니다.
👨💻 나의 코드
var lemonadeChange = function(bills) {
const collect = {}
for (let bill of bills) {
if (bill === 5) {
if (!collect[bill]) collect[bill] = 1;
else collect[bill]++;
}
else if (bill === 10) {
if (collect['5'] > 0) {
collect['5']--;
if (!collect[bill]) collect[bill] = 1;
else collect[bill]++;
} else return false;
}
else if (bill === 20) {
if (collect['5'] >= 1 && collect['10'] >= 1) {
collect['5'] -= 1;
collect['10'] -= 1;
if (!collect[bill]) collect[bill] = 1;
else collect[bill]++;
} else if (collect['5'] >= 3) {
collect['5'] -= 3;
if (!collect[bill]) collect[bill] = 1;
else collect[bill]++;
}
else return false;
}
}
return true;
};
'Problem Solving > LeetCode' 카테고리의 다른 글
[LeetCode / JS] 455. Assign Cookies - Easy (0) | 2023.03.23 |
---|---|
[LeetCode / JS] 942. DI String Match - Easy (0) | 2023.03.21 |