본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 예산(Java)

by wakestand 2019. 9. 24.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 예산

언어 : 자바(Java)

 

문제를 잘못 이해해서 한참 고민했는데

막상 보니까 문제 설명에 비해 핵심이 단순했다

 

예산 안의 범위에서 최대 몇개의 부서(d)를 지원해 줄 수 있냐는 문제였는데

budget을 반드시 다 써야된다는 게 아니라

budget 안에서 최대 몇개의 d 배열의 값을 소모할 수 있냐는 말이다

 

내 풀이방법은 아래와 같은데

 

먼저 배열을 오름차순으로 정렬시켜 주는데

이러면 작은 값이 앞에, 큰 값이 뒤에 위치하게 된다

 

for문을 돌리면서 answer에 배열 값을 계속 더해주는데

여기서 answer의 값이 budget보다 커지게 된다면

for문을 돌린 횟수를 넣고 반환한다

 

for문이 끝나도록 budget의 값을 넘기지 않았다면

돌린 횟수를 넣고 answer를 반환하면 끝이 난다

 

마지막으로 프로그래머스에 바로 적용할 수 있는 코드는 다음과 같다

 

import java.util.Arrays;

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

      Arrays.sort(d);

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

 

반응형

댓글