백준 알고리즘(BOJ)
BOJ_11279_최대 힙
꼬꼬랑내
2021. 11. 11. 00:00
1
구분: 자료구조, 우선순위 큐
언어: Java
전략:
우선순위 큐를 활용한다.
우선순위 큐는 작은 수부터 나오니 큰 수부터 나올 수 있도록 작업을 한다.
0의 개수만큼 숫자가 나와야 하므로, (빈 상태에서도) 일단 0을 넣고, 출력한다.
2. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
//큰 수부터 나오도록 하기 위해 이런 작업을 거침
PriorityQueue<Integer> pq = new PriorityQueue<>((o1,o2) -> o2-o1);
for(int i = 0; i<n; i++) {
int num = Integer.parseInt(br.readLine());
pq.add(num);
if(num == 0) {
System.out.println(pq.poll());
}
}
}
}
3
- 우선순위 큐를 반전 시키는 방법을 오늘 처음 알게 되었다. -> 꼭 숙지하자
- 나는 처음에 바로 우선순위 큐를 이용해야 겠다고 생각했지만, 찾아보니 배열을 이용할 경우 시간초과가 난다고 한다
- Scanner를 사용하면 시간 초과가 난다.