본문 바로가기

프로그래머스/JavaScript

[프로그래머스 JavaScript] Level1 예산

- 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다.

- 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어집니다.

- 최대 몇 개의 부서에 물품을 지원할 수 있는지 return

 

 

최대한 많은 부서에 물품을 비원할 수 있으려면,

신청 금액이 적은 부터들부터 주는것이 최대한 많이 줄 수 있는 방법이다.

 

reduce로 누적 합계를 끝까지 구하긴 하지만

예산보다 작은 경우에는 숫자를 카운트(answer++; answer을 1씩 추가)하여

누적 함수 몇번째까지 예산안에 들어오는지 확인해줍니다.

function solution(d, budget) {
    var answer = 0;
    d.sort( (a, b) => a - b ); // 작은 수부터 나열

    d.reduce( ( acc, cur ) => {
        acc + cur <= budget ? answer++ : answer; // 누적 합계가 budget보다 작은면 answer를 1씩 추가
        return  acc + cur;
    }, 0 ); // 합계의 시작이 0부터
    
    return answer;
}