알고리즘

[프로그래머스 알고리즘] while과 reduce의 합작

고래강이 2023. 6. 21. 12:07

예산

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

    for(let i = 0; i < d.length; i++){
        answer++;
        sum += d[i]

        if(sum > budget)
            answer--;
    }
  
    return answer;
}

정렬이 포인트인듯 근데 다른사람 풀이를 보니 filter를 이용한 것을 while의 조건으로 줘서 해결하는 경우도 있던데 이게 좀 신박하다 그리고 계속 변수 = 0 선언하고 로직을 짜면 좀 더 쉬워지는데 그걸 자꾸 간과하고 따른짓하다가 오래걸렸다....

 

function solution(d, budget) {
    d.sort((a, b) => a - b);
    while (d.reduce((a, b) => (a + b), 0) > budget) {
      d.pop();
    }

    return d.length;
}

합에서 제일 큰수를 빼면서 정해놓은 범위 내로 오게만드는게 신박하구만