본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.1 예산

by 쩜징 2023. 7. 12.

프로그래머스 Lv.1 예산


예산 내에서 각 부서에 필요한 물품을 지원해 준다.

최대 몇 개의 부서에 물품을 지원할 수 있는지 구하는 문제!

 

d는 부서별로 신청한 금액이 들어있는 배열

budget은 예산

 

** 풀이 방법

 

d배열을 오름차순 정렬하면 금액이 작은 순서대로 더해지기 때문에 최대 개수를 쉽게 구할 수 있다.

Arrays.sort(d);

반복문을 통해 예산 내에서 원소들을 하나씩 더해나가고 최대개수를 하나씩 늘린다.

예산이 같아지면 반복문을 빠져나온다.

원소들을 더한 값이 예산보다 커지면 최대개수를 뺀다.

for (int i=0; i<d.length; i++) {
    hap+=d[i]; 
    answer++;
    if (hap==budget) 
        break;
    else if(hap>budget) 
        answer--;
              
}

<> 전체 코드 </>

import java.util.*;
class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0; //최대개수
        int hap = 0; //d 원소 합
        Arrays.sort(d); //오름차순 정렬
        for (int i=0; i<d.length; i++) {
            hap+=d[i]; 
            answer++;
            if (hap==budget) {
                break;
            } else if(hap>budget) {
                answer--;
            }
            
        }
        return answer;
    }
}

 

반응형

댓글