프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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;
}'항해99_10기 > [2주차] 알고리즘 문제풀이' 카테고리의 다른 글
| [29번][중급] K번째 수 (0) | 2022.11.23 |
|---|---|
| [28번][중급] 최대공약수와 최소공배수 (0) | 2022.11.23 |
| [26번][중급] 약수의 합 (0) | 2022.11.23 |
| [25번][중급] 약수의 개수와 덧셈 (0) | 2022.11.23 |
| [23번][중급] 시저암호 (0) | 2022.11.23 |