[프로그래머스] 힙 - Level 2 더 맵게
문제
[프로그래머스 - JAVA] 힙 - Level 2 더 맵게
풀이
- Priority Queue 사용
- scoville 배열의 원소를 다 queue에 넣고 2개씩 빼면서 섞어줌
- peek() 했을 때 K 보다 큰 수가 나올 때까지 섞음
- 다 섞었는데도 안되면 -1 return
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> queue = new PriorityQueue<>();
for(int i = 0 ; i < scoville.length; i++){
queue.add(scoville[i]);
}
while(queue.peek() < K){
if(queue.size() < 2){
answer = -1;
break;
}
int num1 = queue.poll();
int num2 = queue.poll();
queue.add(num1 + num2 * 2);
answer++;
}
return answer;
}
}
- Priority Queue 사용하는 게 처음인 거 같다.
- Priority Queue는 Heap을 응용한 대표적인 사례인 자료구조이다.
- 알아서 우선순위에 의해 정렬된다는 특징이 있다.
Author And Source
이 문제에 관하여([프로그래머스] 힙 - Level 2 더 맵게), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sonch96/프로그래머스-힙-Level-2-더-맵게저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)