🌞Algorithm/🔥Baekjoon

[Baekjoon] 14235_크리스마스 선물

뿌야._. 2023. 7. 19. 13:18

Silver III

문제(출처: https://www.acmicpc.net/problem/14235)

< 크리스마스 선물 >

 

문제 풀이 

 

우선순위 큐를 사용해서 아이들에게 선물을 줄 수 있는지 없는지 판단한다.

 

 my solution (Java)

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

public class _14235_ { // 크리스마스 선물

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			int a = Integer.parseInt(st.nextToken());
			if (a == 0) {
				if (queue.isEmpty())
					bw.write(Integer.toString(-1) + "\n");
				else
					bw.write(Integer.toString(queue.poll()) + "\n");
			} else {
				for (int j = 0; j < a; j++) {
					queue.add(Integer.parseInt(st.nextToken()));
				}
			}
		}
		bw.flush();
	}
}

 

Main

변수)
n : 아이들과 거점지를 방문한 횟수
queue : 우선순위 큐 (내림차순)
a : 거점지 방문인지 아이들 만난 것인지 판별

 

-아이들과 거점지를 방문한 횟수 (n) 입력

- 횟수만큼 a 입력

1) a가 0이면 아이들을 만남
: queue가 비어있으면 줄 선물이 없으므로 -1 출력
: 비어있지 않으면 queue 값을 출력

2) a가 0이 아니라면 거점지이므로 선물을 queue에 저장