https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가
www.acmicpc.net
문제

코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(Collections.reverseOrder());
for(int i=0;i<n;i++) {
int input = Integer.parseInt(br.readLine());
if(input==0) {
Integer p = pq.poll();
if(p == null) sb.append(0 + "\n");
else sb.append(p + "\n");
} else {
pq.add(input);
}
}
bw.write(sb+""); bw.flush();
}
}
해결방법
자바의 java.util.PriorityQueue 클래스를 사용하면 쉽게 해결할 수 있는 문제이다.
우선순위 큐를 생성할 때, Collections.reverseOrder()를 인자로 주면 우선순위가 큰 값이 되어서 최대 힙을 만들 수 있다.
'알고리즘 > 백준' 카테고리의 다른 글
5545번 : 최고의 피자 (0) | 2022.07.30 |
---|---|
1758번 : 알바생 강호 (0) | 2022.07.29 |
18870번 : 좌표 압축 (0) | 2022.07.27 |
2012번 : 등수 매기기 (0) | 2022.07.26 |
2839번 : 설탕 배달 (0) | 2022.07.24 |