https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
해석 및 팁
이 문제는 우선순위 큐를 사용하는 문제입니다. 우선순위 큐는 기본적으로 최소힙의 형태이므로 Collecions.reverseOrder()을 사용하여 최대힙의 형태로 바꾸어주어야 합니다.
Java 코드
import java.util.Scanner;
import java.util.Collections;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
PriorityQueue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
int num = sc.nextInt();
if(num == 0) {
if(q.isEmpty()) sb.append(0+"\n");
else sb.append(q.poll()+"\n");
}
else q.add(num);
}
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
백준 10799 쇠막대기(Java) (0) | 2023.02.07 |
---|---|
백준 4963 섬의 개수(Java) (0) | 2023.02.07 |
백준 14889 스타트와 링크(Java) (0) | 2023.02.07 |
백준 1654 랜선 자르기(Java) (0) | 2023.02.06 |
백준 9020 골드바흐의 추측(Java) (0) | 2023.02.06 |