๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 19638_์„ผํ‹ฐ์™€ ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜

๋ฟŒ์•ผ._. 2023. 7. 17. 17:09

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/19638)

< ์„ผํ‹ฐ์™€ ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜ >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๋‚ด๋ฆผ ์ฐจ์ˆœ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ œ์ผ ํฐ ๊ฑฐ์ธ์˜ ํ‚ค๋ฅผ ๋ฟ…๋ง์น˜ ํšŸ์ˆ˜ ์ œํ•œ๋งŒํผ ๋ฐ˜์œผ๋กœ ์ค„์—ฌ์ค€๋‹ค.

 

 

 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 _19638_ { // ์„ผํ‹ฐ์™€ ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜

	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 = new StringTokenizer(bf.readLine());

		int n = Integer.parseInt(st.nextToken());
		int h = Integer.parseInt(st.nextToken());
		int t = Integer.parseInt(st.nextToken());

		PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
		for (int i = 0; i < n; i++) {
			queue.add(Integer.parseInt(bf.readLine()));
		}

		boolean flag = false;
		for (int i = 0; i < t; i++) {
			if (queue.peek() < h) {
				bw.write("YES\n");
				bw.write(Integer.toString(i));
				flag = true;
				break;
			}
			if (queue.peek() == 1)
				break;
			int num = queue.poll();
			queue.add(num / 2);
		}

		if (!flag) {
			if (queue.peek() < h) {
				bw.write("YES\n");
				bw.write(Integer.toString(t));
			} else {
				bw.write("NO\n");
				bw.write(Integer.toString(queue.peek()));
			}

		}
		bw.flush();
	}
}

 

Main

๋ณ€์ˆ˜)
n : ์ธ๊ตฌ์ˆ˜
h : ์„ผํ‹ฐ์˜ ํ‚ค
t : ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜์˜ ํšŸ์ˆ˜ ์ œํ•œ
queue : ๋‚ด๋ฆผ์ฐจ์ˆœ ์šฐ์„ ์ˆœ์œ„ ํ

 

- ์ธ๊ตฌ์ˆ˜(n), ์„ผํ‹ฐ์˜ ํ‚ค(h), ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜์˜ ํšŸ์ˆ˜ ์ œํ•œ(t) ์ž…๋ ฅ

- ๊ฑฐ์ธ์˜ ํ‚ค๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ queue์— ์ €์žฅ

- ๋งˆ๋ฒ•์˜ ๋ฟ…๋ง์น˜์˜ ํšŸ์ˆ˜ ์ œํ•œ(t)๋งŒํผ ๋ฟ…๋ง์น˜ ์‚ฌ์šฉ

1) queue์˜ ๋งจ ์•ž์— ์žˆ๋Š” ๊ฐ’์ด h๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋ชจ๋“  ๊ฑฐ์ธ์ด ์„ผํ‹ฐ๋ณด๋‹ค ํ‚ค๊ฐ€ ์ž‘๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ "YES"์™€ ๋ฟ…๋ง์น˜๋ฅผ ์ตœ์†Œ๋กœ ์‚ฌ์šฉํ•œ ํšŸ์ˆ˜ ์ถœ๋ ฅ

2) queue์˜ ๋งจ ์•ž์— ์žˆ๋Š” ๊ฐ’์ด 1์ด๋ผ๋ฉด ๋” ์ด์ƒ ์ค„์–ด๋“ค์ง€ ์•Š์œผ๋ฏ€๋กœ ์ข…๋ฃŒ

3) queue์—์„œ ๊ฐ’์„ ๊บผ๋‚ด์™€ ๊ฐ’์„ ๋ฐ˜์œผ๋กœ ์ค„์—ฌ queue์— ์ €์žฅ

- ๋ฟ…๋ง์น˜๋ฅผ ๋‹ค ์‚ฌ์šฉํ•˜๊ณ  ๋‚œ ํ›„์— ์„ผํ‹ฐ๋ณด๋‹ค ํ‚ค๊ฐ€ ์ž‘๋‹ค๋ฉด "YES"์™€ ๋ฟ…๋ง์น˜๋ฅผ ์ตœ์†Œ๋กœ ์‚ฌ์šฉํ•œ ํšŸ์ˆ˜ ์ถœ๋ ฅ

  ์„ผํ‹ฐ๋ณด๋‹ค ํ‚ค๊ฐ€ ํฌ๋‹ค๋ฉด "NO"์™€ ๊ฐ€์žฅ ํ‚ค ํฐ ๊ฑฐ์ธ์˜ ํ‚ค ์ถœ๋ ฅ