문제(출처: 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에 저장
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 2696_중앙값 구하기 (0) | 2023.07.19 |
---|---|
[Baekjoon] 1655_가운데를 말해요 (0) | 2023.07.19 |
[Baekjoon] 23757_아이들과 선물 상자 (0) | 2023.07.18 |
[Baekjoon] 19638_센티와 마법의 뿅망치 (0) | 2023.07.17 |
[Baekjoon] 13975_파일 합치기 3 (0) | 2023.07.14 |