항해99_10기/[2주차] 알고리즘 문제풀이
[27번][중급] 예산
JN33
2022. 11. 23. 01:06
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 답
로직 : d 베열 요수의 부분합 <= 예산일 때, 가장 많은 요소의 수를 가진 부분합의 length를 반환
[pseudo code]
1. arr를 오름차순으로 sort 하기
2. partialSum = d.reduce((a,b)=>a-b) 변수를 선언
3. while (partialSum >= budget)
- partialSum = arr.reduce > budget => pop
4. arr.length를 리턴
function solution(d, budget) {
d.sort((a, b) => a - b);
let partialSum = d.reduce((acc, curr) => acc + curr, 0);
while (partialSum > budget) {
d.pop();
partialSum = d.reduce((acc, curr) => acc + curr, 0);
}
return d.length;
}
console.log(solution([1, 3, 2, 5, 4], 9));
console.log(solution([2, 2, 3, 3], 10));
// while 문 조건부에 연산을 적어 더 줄일 수 있음
function solution(d, budget) {
d.sort((a, b) => a - b);
while (d.reduce((acc, curr) => acc + curr, 0) > budget) d.pop();
return d.length;
}