99클럽 코테 스터디 18일차 TIL + 크리스마스 선물

sun·5일 전
0
post-thumbnail

오늘의 학습 키워드 및 문제

#Heap #PriorityQueue
백준 실버3) 크리스마스 선물

문제풀이

우선순위 큐를 사용하여 문제를 해결했다.
우선순위 큐는 기본적으로 우선순위가 큰 것(작은 값)을 먼저 반환하는데 -> 오름차순
Collections.reverseOrder()를 생성자 인자로 주어 그 반대로 정렬되도록 했다. -> 내림차순
ez했다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Queue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());
        StringBuilder sb = new StringBuilder();
        
        // 아이들과 거점지를 방문한 횟수 n
        int n = Integer.parseInt(br.readLine());
        
        for(int i=0; i<n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            // 거점지에서 a개의 선물을 충전
            int a = Integer.parseInt(st.nextToken());
            if (a == 0) { // 아이들을 만남
                if (q.isEmpty()) {
                    sb.append(-1).append("\n");
                } else {
                    sb.append(q.poll()).append("\n");
                }
            } else { // 선물 충전
                for(int j=0; j<a; j++) {
                    q.add(Integer.parseInt(st.nextToken()));
                }
            }
        }
        
        System.out.print(sb);
        br.close();
    }
}
profile
Please, Steadily

0개의 댓글

관련 채용 정보