JAVA

[Java] Coding Test (예산)

SangRok Jung 2022. 8. 11. 17:05
반응형

문제


s사에서는 각 부서에 필요한 물품을 위하여 자금을 지원해주기로 했습니다.

자금을 지원해 줄때는 신청한 금액을 정확히 구매해 주어야 합니다. 

부서별로 신청한 금액이 들어있는 배열d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원 할 수 있는지 reutrun하는 soulution 함수를 완성하시오.

 

 

▶ 입출력 예

d budget result
[1, 3, 2, 5, 4] 9 3
[2, 2, 3, 3] 10 4

 

 

 

▶ 제한사항

  • d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1이상 100이하 입니다.
  • d의 각 원소를 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1이상 100,000이하의 자연수 입니다.
  • budget은 예산을 나타내며, 1이상 10,000,000 이하의 자연수 입니다.

 

 

 

 

 

 

해법


본 문제는 간단한 데이터의 참조가 필요하기 때문에 ArrayList를 사용하여 구현합니다.

 

 

  1. ArrayList를 오름차순으로 정렬한다.
  2. ArrayList의 데이터를 덧셈하여 budget과 비교한다.

 

import java.util.*;

class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        
        for(int i : d){
            list.add(i);
        }
        
        // d를 오름차순으로 정렬
        Collections.sort(list);
        
        // 인덱스 1부터 차례대로 덧셈.
        int sum = 0;
        
        for(int i = 0; i < list.size(); i++){
            sum += list.get(i);
            
            // if budget보다 커지면 덧셈 중단
            // 중단된 인덱스에서 -1을 answer로 저장. return.
            if(sum > budget){
                answer = i;
                return answer;
            }
        }
        
        // for문을 다 돌면 list의 사이즈 만큼 answer에 저장.
        answer = list.size();

        return answer;
    }
}

 

 

반응형