Algorithm/백준 알고리즘

백준_14235 크리스마스 선물

미스터로즈 2021. 11. 17. 09:16

시간&메모리 제한

 

문제풀이

 

입력&출력

 

문제풀이

package com.Back;

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

public class Back_14235 {

	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<>(Collections.reverseOrder());
		
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		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) {
					sb.append("-1\n");
				}else {
					sb.append(pq.poll()+"\n");
				}
					
			}else {
				for (int j = 0; j < a; j++) {
					pq.add(Integer.parseInt(st.nextToken()));
				}
			}
		}
		System.out.println(sb);
	}
}

 

※ 내 생각

이 문제는 우선순위 큐를 이용하여 문제를 해결할 수 있습니다.

우선순위 큐의 정렬 조건을 내림차순이 되게 만들어 줍니다.
for문에서 a가 0이면 pq의 사이즈를 확인하고 비어 있으면 -1을 비어 있지 않으면 하나 꺼내 출력을 하면 됩니다.

a가 0이 아니면 a의 갯수 만큼 pq에 추가를 해줍니다.