https://www.acmicpc.net/problem/14235

코드설명

우선순위큐(PriorityQueue, Collections.reverseOrder()) 문제입니다.

 

우선순위큐 선언시 아래와 같이 내림차순으로 정렬하도록 구현할 수 있습니다.

private static PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

 

또, 이를 통해 자동으로 정렬되며 시간복잡도는 삽입, 삭제 시 O(log n)으로 줄어듭니다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
    private static int N, T, K, M, L;
    private static int[] arr;
    private static int answer = 0;
    private static PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
    public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		N = Integer.parseInt(st.nextToken());
		for(int i=0;i<N;i++) {
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			if(a == 0) {
				if(pq.size() > 0) {
					System.out.println(pq.poll());
				}else {
					System.out.println(-1);
				}
			}
			else {
				for(int j=0;j<a; j++) {
					pq.offer(Integer.parseInt(st.nextToken()));
				}
			}
		}
		
    }
}

+ Recent posts