CodingSpace

프로그래머스#48(Lv.1)_예산 본문

프로그래머스/Level1

프로그래머스#48(Lv.1)_예산

개발자_조이킴 2021. 11. 3. 11:24

예산

다른 분들이 하신것 보고 배우고 또 배우자! (비트 연산자!)

 

※ 표현식과 연산자 MDN

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators

 

표현식과 연산자 - JavaScript | MDN

이 장은 JavaScript의 표현식과 할당, 비교, 산술, 비트 계산, 논리, 문자열, 삼항 등 여러 가지 연산자를 설명합니다.

developer.mozilla.org

 

비트 연산자별 설명

 

비트 연산자 예시

비트 NOT (~) 연산자:

비트 NOT 연산자를 사용하면 32개의 비트를 모두 반전합니다.

가장 큰 (맨 왼쪽) 비트가 1이면 음수를 나타냅니다.

따라서 ~x는 -x-1과 같은 값으로 평가됩니다.

 

~15 => -15-1 = -16

 

포기하지말고 계속해서 공부하자!

화이팅:)

 

입출력 예시


// 프로그래머스 - 예산

function solution(d, budget) {
    
    // d를 오름차순으로 정렬
    d.sort((a, b) => a - b)
    
    let result = 0
    
    // budget이 0이 되거나, 음수가 되면 while문을 빠져나온다.
    // 혹은, d의 length가 0이면 while문을 빠져나온다.
    while(budget !== 0 && budget > 0 && d.length !== 0) {
        
        let head = d.shift()
        
        // head가 budget보다 작거나 같다면
        if(head <= budget) {
            // result는 +1
            result++
            // budget를 head만큼 뺀다
            budget = budget - head
        }
        
    }
    
    // budget이 음수이면 result-1를 return
    // 그외의 case는 result를 return
    return budget < 0 ? result - 1 : result    
}

 

<다른분의 solution>

 
 
이 코드는 비트연산자 때문에 이해하기 어렵다!

 

 

Comments