문제 : https://programmers.co.kr/learn/courses/30/lessons/12982
(reduce를 돌면서 배열의 요소를 더하려고 했으나 실패함. 그래서 직관적인 for문 사용.)
1. 배열을 오름차순으로 정렬함
2. for문으로 배열을 돌면서 젤 앞 요소부터 더해봄
3. 예산을 초과하지 않을때 까지 최대한 더한 후
4. 예산을 초과하면 for문을 break함.
5. 마지막 요소의 인덱스 값+1을 반환함
function solution(arr, budget) {
arr.sort((a, b) => a - b);
let sum = 0;
let result = 0;
for (let i = 0; i < arr.length; i += 1) {
sum += arr[i];
if (sum <= budget) {
result = i + 1;
} else {
break;
}
}
//
return result;
}
function solution(arr, budget) {
return arr
.sort((a, b) => a - b)
.reduce((acc, cur) => {
// console.log((budget -= cur) >= 0); // t,t,t, f,f
return acc + ((budget -= cur) >= 0);
}, 0);
}
function solution(arr, budget) {
arr.sort((a, b) => a - b);
while (arr.reduce((acc, cur) => acc + cur) > budget) {
arr.pop();
}
return arr.length;
}
function solution(arr, budget) {
return arr
.sort((a, b) => a - b) // [1,2,3,4,5]
.filter((x) => (budget - x >= 0 ? ((budget -= x), 1) : 0)); // [1,2,3,]
}
1.reduce를 통해 숫자를 카운트 할 수 있음
2.arr요소를 "더하면서" budget보다 큰지 조건을 계산 할 수도 있지만,
반대로 budget에서 arr요소를 "빼면서" 조건을 계산할 수 있음.