[프로그래머스] 예산

이찬혁·2024년 1월 3일

알고리즘

목록 보기
10/72

프로그래머스 Lv1 - 예산

  1. 오름차순으로 정렬하여 맨 처음 인덱스부터 최종 인덱스까지 하나씩 더해간다.(정렬 이유는 낮은 수 부터 더해야지 초과 예산을 알 수 있기 때문)
  2. 더해가면서 지원 가능 부서의 수를 +1
  3. 만약 더하고나서 sum이 예산을 초과한다면 반복문 탈출

처음에는 완전탐색 알고리즘을 사용해야하는 문제로 생각해 한 15분 헤맸던 것 같다..

Budget.java

package com.example.Programmers.Lv1;

import java.util.Arrays;

public class Budget {
    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 += 1;
        }
        return answer;
    }
}

BudgetTest.java

package com.example.Programmers.Lv1;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class BudgetTest {
    @Test
    public void budgetTest() {

        Budget budget = new Budget();
        int result1 = budget.solution(new int[] { 1, 3, 2, 5, 4 }, 9);
        int result2 = budget.solution(new int[] { 2, 2, 3, 3 }, 10);

        assertEquals(3, result1);
        assertEquals(4, result2);
    }
}
profile
나의 개발로그

0개의 댓글