Summer/Winter Coding
🔥 예산 🔥
S사에서 각 부서에 필요한 물품을 지원해주려한다.
하지만 예산이 정해져있기 때문에 모든 부서의 물품을 구매할 수는 없다.
그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 한다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하는 solution을 완성해보자
d | budget | return |
---|---|---|
[1,3,2,5,4] | 9 | 3 |
[2,2,3,3] | 10 | 4 |
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
Arrays.sort(d);
//부서가 하나일때
if(d.length==1){
if(d[0]<budget){
answer = 1;
}
}
int index = 0;
int sum = 0;
for(int i=0;i<d.length;i++){
sum = sum + d[i];
if(sum <= budget){
index = index +1;
answer = index;
}else if(sum > budget){
answer = index;
}else if(sum == budget){
answer = d.length;
}
}
return answer;
}
}
처음 문제를 풀었을 때 테스트는 통과했는데 제출하고나니 실행 실패가 와르르 쏟아졌다.
처음에는 테스트 4, 6, 18, 19, 21, 23에서 오류가 발생했다.
이때는 sum이 budget보다 작은 경우를 생각하지 않아서 실패를 한 것이었다.
위의 케이스를 추가하고 코드를 고치고 나니 이제는 4번,21번, 23번이 문제였다.
여기서는 첫번째 if의 조건 sum <= budget이 문제였다.
같은 경우에도 index를 추가해주어야하는데 안해서 그랬던 것이다.
어찌저찌 문제를 해결하기는 했는데 뭔가 찝찝하고 왜 된거지 싶은 문제다.
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
Arrays.sort(d);
for (int i = 0; i < d.length; i++) {
budget -= d[i];
if (budget < 0) break;
answer++;
}
return answer;
}
}
이게 뭐람
난 뭘한거람
이렇게 간단하고 쉽게 이해되는 코드가 있는데 혼자 뭘한거지