N

(Leet Code JS)Lemonade Change 본문

Leet Code 알고리즘

(Leet Code JS)Lemonade Change

naeunchan 2022. 2. 28. 10:03
728x90
반응형

https://leetcode.com/problems/lemonade-change/

 

Lemonade Change - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

그리디 알고리즘.

5, 10, 20달러를 받았을 때 거스름돈을 남길 수 있는지 확인하면 된다.

 

money라는 이름으로 3의 길이만큼 선언.

0의 인덱스부터 5, 10, 20 달러를 가진다.

 

for문으로 bills를 순회.

만약 5달러를 받았다면 거스름돈은 없기 때문에 money[0]++.

 

10달러를 받았다면 5달러를 거슬러 주고, 10달러를 1개 추가한다.

조건 검사를 하여 5달러가 없다면 return false.

그렇지 않다면 money[0]--, money[1]++를 해준다.

 

20달러를 받았다면 2가지 조건을 검사할 수 있다.

10달러 + 5달러를 거슬러 주거나,

5달러 3장을 거슬러 주면 된다.

만약 이에 해당하는 돈이 없다면 바로 return false.

그럴 돈이 있다면 각 조건에 맞게 돈을 거슬러 주고, 더하면 된다.

 

const lemonadeChange = (bills) => {
    const money = [0, 0, 0];
    
    for(const bill of bills){
        if(bill === 5){
            money[0]++;
        } else if(bill === 10){
            if(money[0] === 0){
                return false;
            }
            
            money[1]++;
            money[0]--;
        } else if(bill === 20){
            if(money[0] >= 1 && money[1] >= 1){
                money[0]--;
                money[1]--;
                money[2]++;
            } else if(money[0] >= 3){
                money[0] -= 3;
                money[2]++;
            } else{
                return false;
            }
        }
    }
    
    return true;
};
728x90
반응형

'Leet Code 알고리즘' 카테고리의 다른 글

(Leet Code JS)Triangle  (0) 2022.03.01
(Leet Code JS)DI String Match  (0) 2022.02.28
(Leet Code JS)Can Place Flowers  (0) 2022.02.25
(Leet Code JS)Assign Cookies  (0) 2022.02.25
(Leet Code JS)Decode Ways  (0) 2022.02.18