티스토리 뷰

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

 

코딩테스트 연습 - 예산

S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 ��

programmers.co.kr

 

[문제 풀이]

 

1. 부서의 길이가 100 이하이므로m O(n)으로 충분히 풀 수 있다.

2. 각 부서가 요구한 예산은 100_000이하이고, 전체 예산은 10_000_000이므로 int로 충분히 풀 수 있다.

3. 최대한 많은 부서를 지원해야하므로 예산 배열을 오름차순으로 정렬한다.

4. 예산이 바닥날때까지 예산 배열에서 빼준다.

5. 지원할 수 있는 부서의 수를 반환한다.

 

[소스 코드]

 

import java.util.Arrays;

public class Budget {
    public static void main(String[] args) {
        int[] d = {1, 1, 2, 3, 3, 3, 3, 1, 1};
        int budget = 9;

        System.out.println(solution(d, budget));
    }

    private static int solution(int[] d, int budget) {
        int answer = 0;
        Arrays.sort(d);

        for (int i : d) {
            if (budget - i < 0) {
                break;
            }
            budget -= i;
            answer++;
        }

        return answer;
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함