알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄

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

 

코딩테스트 연습 - 예산

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

programmers.co.kr


Think🤔

예산을 이용해서 최대한 많은 부서에게 물품을 지원할 수 있는 방법을 찾아야 하므로,
제일 작은 예산인 부서부터 정렬 시켜서 카운트를 세면 된다.


Solution✍
import java.util.Arrays;

class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        int i = 0;
        
        Arrays.sort(d);
        
        while(i < d.length){
            if(budget >= d[i]){
                answer++;
                budget -= d[i];
            }
            i++;
        }
        return answer;
    }
}

Review🤩

작은 수 부터 확인하니깐 if문 위치를 조정하는 것이 더 효율적이다!

import java.util.Arrays;

class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        
        Arrays.sort(d);
        
        for(int i=0; i<d.length; i++){
            if(budget < d[i]){break;}
            budget -= d[i];
            answer++;
        }
        
        return answer;
    }
}

 

+ Recent posts