본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.1

[프로그래머스 - JAVA] 예산

by 코딩하는 흰둥이 2023. 4. 2.


  • 내 풀이
import java.util.Arrays;
class Solution {
    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];
                // for문이 0부터 시작되고
                // 합계가 예산을 넘어갔을 때의 i가 배열의 i가 아닌 신청한 부서의 수가된다
            if (sum > budget){
                answer = i;
                break;
            }
        }
        // 합계와 예산이 같은 경우에 제대로 카운트가 되지 않는다
        if (sum <= budget){
            answer = d.length;
        }
        return answer;
    }
}

 

  • 다른 사람 풀이
import java.util.*;

class Solution {
  public int solution(int[] d, int budget) {
      int answer = 0;

        Arrays.sort(d);

        for (int i = 0; i < d.length; i++) {
            budget -= d[i];

            if (budget < 0) break;

            answer++;
        }

        return answer;
  }
}





import java.util.Arrays;

class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        int[] dept = Arrays.copyOf(d, d.length);
        Arrays.sort(dept);
        int sum = 0;
        for (int inx=0; inx<dept.length; inx++) {
            sum += dept[inx];
            if (sum<=budget) {
                answer++;
            }
        }
        return answer;
    }
}

댓글