[우선순위 큐(Priority Queue) - JAVA]
1. 우선순위 큐(Queue)란?
일반적인 큐는 제일 먼저 들어간 데이터가 가장 먼저 나오게 되는 자료구조이다. 이런 큐의 특성과 달리 우선순위 큐는
들어간 순서에 상관없이 일정한 규칙에 따라 우선순위를 선정하고, 우선순위가 가장 높은 데이터가 가장 먼저 나오게 된다.
2. 우선순위 큐 function
E peek() : 큐의 처음에 있는 원소를 삭제하지 않고 가져온다. 큐가 비어있으면 null을 반환
boolean offer(E e) :원소를 추가할 때 큐의 용량을 넘어서면 false를 반환한다.
E poll() : 큐의 처음에 있는 원소를 가져온다. 큐에 원소가 없으면 null을 반환한다.
E remove() : 큐의 처음에 있는 원소를 제거한다. 큐에 원소가 없으면 예외가 발생한다.
3. 우선순위 큐를 이용한 자바 프로그램
[프로그래머스 - 더 맵게]
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42626
-해답
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
|
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue<Integer> que=new PriorityQueue<Integer>();
//큐에 배열 넣어주기
for(int num:scoville){
que.add(num);
}
//섞은 횟수 저장할 변수
int count=0;
while(que.peek()<K&&!que.isEmpty()) {//peek()은 꺼내지 않고 값만 확인
int lessSpicy=que.poll();//poll()은 우선순위가 젤 우선인 값을 꺼냄
if(!que.isEmpty()){
int secondLessSpicy=que.poll();
que.add(lessSpicy+secondLessSpicy*2);
count++;
}else{
return -1;
}
}
return count;
}
}
|
cs |
'알고리즘' 카테고리의 다른 글
[알고리즘] 조합(Combination) (0) | 2022.12.02 |
---|---|
[알고리즘] 슬라이딩 윈도우 (0) | 2022.09.15 |
[알고리즘] 정렬1(버블,선택,삽입) (0) | 2022.07.29 |
[알고리즘] 힙(Heap) (0) | 2022.07.21 |
[알고리즘] 해시(Hash) (0) | 2022.07.15 |