728x90
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
Priority Queue (우선순위 큐)
FIFO(First In First Out)인 일반적인 Queue와 다르게 Priority Queue는 우선순위가 높은 데이터가 먼저 출력된다.
기본적으로 오름차순 정렬을 하게 되는데 정렬 기준을 바꾸고 싶다면 람다식을 이용하거나 Comparator, Comparable를 이용해야 한다.
🏷️ Integer는 Collections.reverseOrder()통해 간단하게 내림차순 정렬 할 수 있다.
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
pq.add(1);
pq.add(3);
pq.add(7);
pq.add(6);
//pq.offer()도 가능
System.out.println(pq.poll()); // 7 출력
package 백준renew;
import java.io.*;
import java.util.*;
public class 실버2_11279_최대힙 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
StringBuilder sb = new StringBuilder();
int x = Integer.parseInt(br.readLine());
for(int tc=0; tc<x; tc++) {
int now = Integer.parseInt(br.readLine());
if(now == 0) {
if(pq.isEmpty()) {
sb.append(0).append('\n');
}else {
int tmp = pq.poll();
sb.append(tmp).append('\n');
}
}else {
pq.add(now);
}
}
System.out.println(sb.toString());
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[BOJ] 11286: 절댓값 힙 (JAVA) (1) | 2024.02.28 |
---|---|
[BOJ] 1927: 최소 힙 (JAVA) (0) | 2024.02.27 |
[BOJ] 5635: 생일 (JAVA) (2) | 2024.02.25 |
[BOJ] 13549: 숨바꼭질3 (JAVA) (0) | 2024.02.23 |
[BOJ] 14940: 쉬운 최단거리 (JAVA) (0) | 2024.02.22 |