한 걸음씩

[프로그래머스][JS] 예산 본문

Programmers

[프로그래머스][JS] 예산

winter17 2023. 7. 16. 11:17

https://school.programmers.co.kr/learn/courses/30/lessons/12982

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(d, budget) {
    d.sort((a, b) => a - b)
    let cnt = 0
    for (let i = 0; i < d.length; i++){
        if (budget >= d[i]){
            // console.log(`budget이 d[i]보다 크거나 같으면 중단: budget : ${budget}, d[i] :${d[i]}`)
            budget -= d[i]
            cnt++
        }else{
            break
        }
    }
    return cnt
}

 

입력값 〉	[1, 3, 2, 5, 4], 9
기댓값 〉	3
실행 결과 〉	테스트를 통과하였습니다.
출력 〉	
budget이 d[i]보다 크거나 같으면 중단: budget : 9, d[i] :1
budget이 d[i]보다 크거나 같으면 중단: budget : 8, d[i] :2
budget이 d[i]보다 크거나 같으면 중단: budget : 6, d[i] :3
// d[i]가 4일 경우에 budget이 2(6 - 4)가 되므로 2 >= 4는 false이기 때문에 else구문으로 빠져 반복을 중단

 


리뷰

오름차순으로 정렬하여 (예산 - 가장 작은 수부터) 반복을 하다가 예산이 빼는 수보다 작아지면 반복을 중단하고 반복하면서 뺀 횟수를 반환한다. 

문제 설명이 좀 장황해서 어렵게 느껴지는데 d배열에서 숫자가 작은 것부터 물품을 구매해 주면 된다.