😎풀이

  1. 5원을 받은 경우는 그냥 합산
  2. 10원을 받은 경우 거스름 돈 5원이 없다면 false
  3. 20원을 받은 경우 다음 규칙을 따름
    3-1. 5원 짜리 거스름 돈이 없다면, false
    3-2. 10원 짜리 거스름 돈이 없다면, 5원 3개가 있는지 확인 없다면 false
    3-3. 10원 짜리 거스름 돈이 있다면, 5원과 10원 각각 결제
function lemonadeChange(bills: number[]): boolean {
    let five = 0
    let ten = 0
    let twenty = 0
    for(const bill of bills) {
        if(bill === 5) {
            five++
        } else if(bill === 10) {
            ten++
            if(five === 0) return false
            five--
        } else if(bill === 20) {
            twenty++
            if(five === 0) return false
            if(ten === 0) {
                if(five < 3) return false
                five -= 3
            } else {
                ten--
                five--
            }
        }
    }
    return true
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글