프로그래머스 1단계 - 예산

원동휘·2022년 10월 1일
0

프로그래머스

목록 보기
33/46

< 문제 >

풀이
먼저 주어진 예산으로 최대 몇개의 부서의 물품을 지원할지 라는것은 -> 가장 적은 숫자들을 더해서 그 합이 예산을 넘는지 넘지않는지 확인하는것으로 접근 (더 큰숫자를 먼저 더하는건 의미없다 판단)
그래서 먼저 오름차순으로 숫자를 정렬해주고, 반복을 돌며 부품신청별 예산을 확인.
while문 특성상 add라는값은 While문이 돌고난 이후 값이 채워지므로(ex 조건절에 10 <= 9)이면 count가 올라간상황 마지막결과값에 count를 -1 해줌으로써 풀이

function solution(d, budget) {
  let add = 0;
  let count = 0;

  d.sort((a, b) => a - b);

  while (add <= budget) {
    add = add + d[count];
    count++;
  }

  return count - 1;
}

console.log(solution([1, 3, 2, 5, 4], 9));
console.log(solution([2, 2, 3, 3], 10));

js POP메소드를 이용한 풀이

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

  while (
    d.reduce((acc, cur) => {
      return acc + cur;
    }, 0) > budget
  ) {
    d.pop();
  }

  return d.length;
}

console.log(solution([1, 3, 2, 5, 4], 9));
console.log(solution([2, 2, 3, 3], 10));
profile
Front-End Developer #Nextjs #React #Typescript

0개의 댓글