📑 1. 문제설명
부서마다 신청한 금액이 담긴 배열 d
그리고 예산 한도 budget이 주어진다.
최대 몇 개 부서의 물품을 구매할 수 있는 지 리턴하는 문제
💡 2. 풀이과정
여기서 적은 금액부터 차례대로 지원해야 더 많은 부서를 커버할 수 있다.
👨💻 3. 정답코드
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
int sum = 0;
Arrays.sort(d);
for (int i = 0; i < d.length; i++) {
sum += d[i];
if (sum > budget) {
break;
}
answer++;
}
return answer;
}
}
- 부서 신청 금액 배열 d를 오름차순 정렬하기
이렇게 해야 작은 금액부터 지원 가능 - 정렬된 순서대로 금액을 하나씩 더하면서 누적합
- 누적합이 budget 넘지 않는 한 지원 가능
- 그때까지의 개수를 세면 최대 지원 부서 수
오답
- 처음에 if문 범위 아래와 같이 씀
if (sum => budget) {
break;
}
- sum >= budget이면
- >= 쓰면 예산 딱 맞춰서 쓰는 경우도 초과했다 처리되서 마지막 부서 지원 X
- sum > budget으로 수정
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
| [프로그래머스] (Java) 소수 찾기 문제풀이 - 에라토스테네스의 체 (2) | 2025.09.03 |
|---|---|
| [프로그래머스] (Java) 이상한 문자 만들기 문제풀이 (2) | 2025.09.03 |
| [프로그래머스] (Java) 직사각형 별찍기 문제풀이 (1) | 2025.09.03 |
| [프로그래머스] (Java) 3진법 뒤집기 문제풀이 (1) | 2025.09.03 |
| [프로그래머스] (Java) 삼총사 문제풀이 - 완전탐색, 투포인터 (1) | 2025.09.03 |