알고리즘

백준 14235번 크리스마스 선물 (JAVA)

박카스마시며코딩 2023. 7. 5. 20:45

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

 

14235번: 크리스마스 선물

크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만

www.acmicpc.net

 

저는 우선순위 큐를 통해 문제를 해결하였습니다.

0인 경우 우선순위 큐에서 하나 뽑고 그렇지 않다면 우선순위 큐에 선물을 저장하였습니다.

 

package BOJ.greedy;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
import java.util.function.Function;

public class BOJ_14235_2 {
    private static final int NOT_FOUND = -1;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Function<String,Integer> stoi = Integer::parseInt;
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = stoi.apply(st.nextToken());
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        for(int i = 0 ; i < n ; i++){
            st = new StringTokenizer(br.readLine());
            int cnt = stoi.apply(st.nextToken());
            if(cnt == 0){
                if(pq.isEmpty()){
                    System.out.println(NOT_FOUND);
                }else{
                    System.out.println(pq.poll());
                }
            }
            for(int j = 0 ; j < cnt ; j++){
                pq.offer(stoi.apply(st.nextToken()));
            }
        }
    }
}