๐ŸŒž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์— ์ €์žฅ