728x90
반응형

2021.05.29

문제명 : Summer/Winter Coding(~2018) - 예산

사용언어 : Javascript

개발 시간 : 30분

 

코딩테스트 연습 - 예산

S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는

programmers.co.kr

 

📋 문제 설명

이 문제의 핵심은 정해진 예산으로 최대 몇 개의 부서의 물품을 구매할 수 있는지입니다.

 

 

📢 입출력 예

정해진 예산을 꼭 써야 하는 것은 아닌 것도 주의하면 좋을 것 같습니다.

 

 

🔑 문제 풀이

적은 금액부터 지원해주면 최대한 많은 부서의 물품을 구매할 수 있다

1. 부서 배열 d를 오름차순 정렬시키기

2. 적은 금액부터 금액 합치기 -> 합친 금액이 예산보다 많아지기 전까지만 합치기

3. 주어진 예산보다 많아질 시 break!

 

function solution(d, budget) {
    var answer = 0;
    var sum = 0;
    
    // 오름차순 정렬
    d = d.sort(function(a, b){ return a-b; });

    for(var i=0; i<d.length; i++){
        sum += d[i];
        
        // 주어진 예산보다 합이 적을때까지만 합치기
        if(sum <= budget){
            answer++;
        }else{
            break;
        }
    }
    
    return answer;
}

 

숫자 배열 오름차순 정렬 시, 문자로 인식하므로 주의하세요!

var arr = [1,2,100]

arr.sort(); 
// 결과 : [1,100,2]

arr.sort(function(a,b) {return a-b;});
// 결과 : [1,2,100]

 

 

🔔 새로 알게 된 점

1. 숫자 배열 정렬 시에는 문자로 인식하므로 sort(function(a,b) {return a-b;}); 사용하기

728x90
반응형

+ Recent posts