이 문제의 경우 주어진 예산에 맞춰 최대한 부서의 예산 배열의 값들을 사게 하는 문제인데, 욕심쟁이 방법으로 구하게 된다면 sort로 예산 배열을 오름차순을 한 후 budget을 부서 예산 배열의 작은 값부터 빼주면서 카운트를 해주든, 아니면 부서 배열의 작은 값부터 더하면서 예산을 벗어나는 순간을 반환해주든 하는 방법으로 문제를 풀면 됩니다.
function solution(d, budget) { let result = 0; let sum = 0; d = d.sort((a,b) => a-b); for(let i = 0 ; i < d.length ; i++){ sum += d[i]; if(sum > budget) { // 예산을 초과한 경우 i (i는 0부터 시작하므로 i를 반환할 경우 예산을 넘지 않는 부서의 개수를 반환하는 것과 마찬가지 입니다.) return i; } else if(sum <= budget && i === d.length-1) return d.length // 만약 i가 부서 배열의 끝까지 온 상태에서 부서 배열의 모든 값을 합한 결과값이 budget보다 낮거나 갚을 경우, 즉 모든 부서의 값을 충당할 수 있을 때 부서 배열의 길이를 반환합니다. } }