반응형
문제
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를 사용하여 구현합니다.
- ArrayList를 오름차순으로 정렬한다.
- 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;
}
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Coding Test (신고 결과 받기) (0) | 2022.08.12 |
---|---|
[Java] Coding Test (완주하지 못한 선수) (0) | 2022.08.11 |
[Java] Coding Test (크레인 인형뽑기 게임) (0) | 2022.08.09 |
[Java] Coding Test (Pick two and add them) (0) | 2022.08.08 |
[Java] Coding Test (Lotto) (0) | 2022.08.04 |