[JAVA/프로그래머스] 서머코딩/윈터코딩(~2018): 예산

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/12982

👊 도전

1. 설계

  1. 최대한 많은 부서에 지원해야하므로 금액이 담긴 배열d를 오름차순 정렬한다.
  2. 예산이 넘지 않는 한에서 앞에서부터 지원한다.

2. 구현 (성공 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
/**
 *
 * @author HEESOO
 *
 */
 class Solution {
   public int solution(int[] d, int budget) {
       int answer = 0;
       Arrays.sort(d);
       int money=0;
       for(int dd:d){
           if(money+dd<=budget){
               money+=dd;
               answer++;
           }              
       }
       return answer;
   }
 }
 

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. 금액이 적은 곳부터 지원한다.
    • 최대한 많은 부서에 지원해야하므로 금액이 적은 곳부터 지원해야한다.
    • 따라서 배열을 오름차순으로 정렬한 후, 앞에서부터 지원한다.
    • 예산이 넘어가면 지원을 중단한다.

👏 해결 완료!

문제가 요구하는 것을 파악하니 코드 작성은 어렵지 않았다.