Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

발전하는 개발자가 되자

프로그래머스 알고리즘 : 더 맵게 (java) 본문

개발공부/알고리즘

프로그래머스 알고리즘 : 더 맵게 (java)

백경훈 2019. 3. 12. 13:13

프로그래머스 알고리즘 (java)

더 맵게

프로그래머스 (더 맵게)

코드 리뷰

배열중 값(스코빌 지수)이 가장 낮은 두개의 음식을 조건( a + b*2)에 맞춰 계산해 모든 배열의 값이 k 이상이 되게 만들어 섞은 횟수를 return 하는 문제 입니다.

조건

  • 가장 작은 값 2개를 배열에서 뽑는다.
  • 작은것과 두번째 작은것을 조건에 맞춰 계산한다.
  • 계산한 값을 다시 배열에 반환한다.
  • 배열의 값이 다 k보다 클 때 까지 반복한다.

풀이 방향

저는 가장 작은 값을 두개 뽑아야 하니 우선순위 큐를 사용하면 될것이라 생각했습니다. 생각대로 구현해보니 어렵지 않게 구현할 수 있었습니다. 우선순위 큐 를 사용할 줄 알면 쉽게 풀 문제였던거 같습니다.

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> heap = new PriorityQueue();

        for (int aScoville : scoville) {
            heap.offer(aScoville);
        }

        while (heap.peek() <= K) {
            if (heap.size() == 1) {
                return -1;
            }
            int a = heap.poll();
            int b = heap.poll();


            int result = a + (b * 2);

            heap.offer(result);
            answer ++;
        }
        return answer;
    }
}


Comments