프로그래머 수준 1 – 예산

https://school.programmers.co.kr/learn/courses/30/lessons/12982

package study.java.programmers.level01;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

// 예산
// https://school.programmers.co.kr/learn/courses/30/lessons/12982
public class Level01_42 {
    public static void main(String() args) {
        System.out.println(solution(new int(){1,3,2,5,4}, 9));  // 3
        System.out.println(solution(new int(){2,2,3,3}, 10));   // 4
        System.out.println(solution(new int(){1,1,1,1,1}, 11));
    }

    public static int solution(int() d, int budget) {
        int answer = 0;

        List<Integer> nList = Arrays.stream(d).boxed().collect(Collectors.toList());    // 배열을 리스트로 변환
        Collections.sort(nList);    // 오름차순 정렬

        int sumVal = nList.stream().mapToInt(Integer::intValue).sum();
        if(sumVal == budget){
            answer = nList.size();
        }else{
            int sum = 0;
            for(int i=0; i<nList.size(); i++){
                sum += nList.get(i);
                if(sum > budget){
                    answer = i;
                    break;
                }else if(sum == budget){
                    answer = (i + 1);
                    break;
                }else{
                    answer ++;
                }
            }
        }

        return answer;
    }
}