본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Programmers] level 1: 예산 by JavaScript

by codingBear 2022. 7. 7.
728x90
반응형

 이번 글은 다음 링크의 글을 토대로 작성하였습니다.

 

 

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

2021-04-05

velog.io

 

[프로그래머스] level1. 예산 (javascript)

문제 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄

zzemal.tistory.com

 

[Programmers] 예산 / JavaScript

문제 https://programmers.co.kr/learn/courses/30/lessons/12982?language=javascript 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을..

king-goni.tistory.com


 이번 문제에 대한 자세한 사항은 다음 링크를 참조하세요.

 

 문제에 대한 접근 자체를 잘못했다. 예시를 보니 일정 숫자를 짝을 지어 budget과 맞아떨어지게 계산해야 하는 줄 알았는데 다른 사람들의 코드를 보니 그냥 주어진 예산이 될 때까지 더하거나 빼서 풀면 되는 간단한 문제였다. 

 budget보다 값이 커질 때까지 더하는 문제 혹은 작아질 때까지 빼는 문제를 기본으로 내장 함수를 활용한 해답 몇 개를 더 올리겠다.

 

Solutions

Solution 1.
function solution(d, budget) {
  /* Normal Ver. */
  let answer = 0
  let sum = 0;
  d.sort((a, b) => a - b);

  for (const num of d) {
    sum += num;
    if (sum > budget) break;
    answer++;
  }
  return answer;
////////////////////////////////////
  let answer = 0;
  d.sort((a, b) => a - b);

  for (const num of d) {
    if (num > budget) break;
    budget -= num;
    answer++;
  }
  return answer;
}
Solution 2.
function solution(d, budget) {
  /* forEach Ver. */
  let answer = 0;
  let sum = 0;
  d.sort((a, b) => a - b).forEach((val) => {
    sum += val;
    if (sum <= budget) {
      answer++;
    }
  });
  return answer;
}
Solution 3.
function solution(d, budget) {
  /* reduce Ver. */
  d.sort((a, b) => a - b);
  while (d.reduce((acc, curr) => acc + curr, 0) > budget) d.pop();
  return d.length;
}
728x90
반응형

댓글