[프로그래머스 코딩테스트 연습문제] 예산 | 알고리즘 설명 & 문제 풀이 with 자바스크립트(Javascript)

Re_Go·2023년 12월 30일
0

코딩테스트연습

목록 보기
55/98
post-thumbnail
post-custom-banner

1. 문제 설명

2. 제한사항

3. 입출력 예

4. 입출력 예 설명

5. 첫번째 문제 풀이(2023-12-31)

이 문제의 경우 주어진 예산에 맞춰 최대한 부서의 예산 배열의 값들을 사게 하는 문제인데, 욕심쟁이 방법으로 구하게 된다면 sort로 예산 배열을 오름차순을 한 후 budget을 부서 예산 배열의 작은 값부터 빼주면서 카운트를 해주든, 아니면 부서 배열의 작은 값부터 더하면서 예산을 벗어나는 순간을 반환해주든 하는 방법으로 문제를 풀면 됩니다.

function solution(d, budget) {
   
    let result = 0;
    let sum = 0;
    d = d.sort((a,b) => a-b);

    for(let i = 0 ; i < d.length ; i++){
        sum += d[i];
        if(sum > budget) { // 예산을 초과한 경우 i (i는 0부터 시작하므로 i를 반환할 경우 예산을 넘지 않는 부서의 개수를 반환하는 것과 마찬가지 입니다.)
            return i;
        }
        else if(sum <= budget && i === d.length-1) return d.length
      // 만약 i가 부서 배열의 끝까지 온 상태에서 부서 배열의 모든 값을 합한 결과값이 budget보다 낮거나 갚을 경우, 즉 모든 부서의 값을 충당할 수 있을 때 부서 배열의 길이를 반환합니다.
    }   
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.
post-custom-banner

0개의 댓글