문제 설명
→ 입출력 예시 1번의 경우, 예산이 최대 9원이기 때문에 4개 이상의 부서에 지원을 할 경우 무조건 9원이 넘어가게 된다. 따라서 이 경우의 최대 지원할 수 있는 부서의 개수는 3개이다.
import java.util.Arrays;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
int compare = 0;
Arrays.sort(d); // 작은 금액 순으로 정렬
for(int i = 0; i < d.length; i++){
if(compare + d[i] <= budget){
answer++;
compare += d[i];
}
}
return answer;
}
}
우선 생각나는 대로 써봤는데 한번에 풀어서 기분이 너무너무 좋았다:)
생각한 내용
작은 금액을 많이 지원해주는 것이 최대로 지원할 수 있을 것이다.
⇒ 그러니까 신청 금액이 들어있는 배열 d를 정렬을 하면서 시작을 했다.
예산과 비교를 위한 변수가 필요하다.
⇒ compare 이라는 변수를 두고 지원하기로 결정한 금액을 더해가면서 가진 예산과 비교를 하자!
⇒ compare은 지원하기로 결정한 금액을 담고 있는 변수
⇒ 따라서 compare + d[i]가 예산보다 크다면 d[i]는 지원할 수 없게 되므로 for문이 끝나게 되고 answer을 리턴하게 된다.
⇒ 예산보다 작다면 answer++ 해주고 compare에 지원하기로 결정된 d[i] 금액을 더해준다.
이렇게 한 번에 푼게 처음이라 그런지 실력이 늘고 있는거 같은 자신감이 뿜뿜한다,,💛