https://www.acmicpc.net/problem/11279
[풀이]
이전에 최소 힙을 문제 푼것과 유사하다. 우선순위 큐를 구현하면 최소 힙이 기본적으로 구성되기 때문에 최대 힙을 구현하기 위해서는 반대 순서, 즉 Collections.reverseOrder()를 사용하면 된다. 이후 0이 나올 때 우선순위 큐에서의 값을 반환하면 된다.
(주의할 점)
우선순위 큐를 구현하면 풀 수 있는 간단한 문제였기에 특별히 주의할 부분은 없었다. 우선 순위 큐에 대한 개념과 구현 방법, 관련 메소드에 대해서 한 번 짚어보면 충분할 것 같다!
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < N; i++) {
int input = Integer.parseInt(bf.readLine());
if (input == 0) {
if (priorityQueue.size() == 0) {
System.out.println("0");
} else {
System.out.println(priorityQueue.poll());
}
} else {
priorityQueue.add(input);
}
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 11060번 : 점프 점프(Java) (0) | 2021.08.04 |
---|---|
백준 1874번 : 스택 수열(Java) (0) | 2021.08.01 |
백준 2108번 : 통계학(Java) (0) | 2021.07.31 |
백준 2941번 : 크로아티아 알파벳(Java) (0) | 2021.07.30 |
백준 3085번 : 사탕 게임(Java) (0) | 2021.07.29 |