๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 25101_Robin Hood

๋ฟŒ์•ผ._. 2025. 12. 18. 11:55
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/25101)

< Robin Hood >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๋ถ€์œ ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ์„œ 100์„ ๋บ€๋‹ค.

 

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.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class _25101_ { // Robin Hood

	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 k = Integer.parseInt(st.nextToken());

		PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {

			@Override
			public int compare(int[] o1, int[] o2) {
				if (o1[0] == o2[0]) {
					return o1[1] - o2[1];
				}
				return o2[0] - o1[0];
			}
		});

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			queue.add(new int[] { Integer.parseInt(st.nextToken()), i });
		}

		boolean flag = false;
		for (int i = 0; i < k; i++) {
			if (queue.peek()[0] <= 100) {
				flag = true;
				break;
			}
			int temp[] = queue.poll();
			temp[0] -= 100;
			queue.add(temp);
		}

		if (flag) {
			bw.write("impossible");
		} else {
			int result[] = new int[n];
			while (!queue.isEmpty()) {
				int temp[] = queue.poll();
				result[temp[1]] = temp[0];
			}
			for (int i = 0; i < n; i++) {
				bw.write(result[i] + " ");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n, k : ์‚ฌ๋žŒ ์ˆ˜, ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ ˆ๋„์˜ ์ˆ˜ 
queue : ์šฐ์„ ์ˆœ์œ„ ํ 
flag : ์ˆ˜ํ–‰ ์—ฌ๋ถ€ 
result : ๋‚จ์•„ ์žˆ๋Š” ์ด ์žฌ์‚ฐ 

 

์‚ฌ๋žŒ ์ˆ˜์™€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ ˆ๋„์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์„ ์–ธํ•˜์—ฌ ์žฌ์‚ฐ์ด ๋งŽ์€ ์ˆœ์œผ๋กœ, ์žฌ์‚ฐ์ด ๊ฐ™๋‹ค๋ฉด ๋ชฉ๋ก์—์„œ ์•ž์— ์žˆ๋Š” ์‚ฌ๋žŒ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์‚ฌ๋žŒ ์ˆ˜๋งŒํผ ์žฌ์‚ฐ์„ ์ž…๋ ฅ๋ฐ›์•„ ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•œ๋‹ค. ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ ˆ๋„์˜ ์ˆ˜๋งŒํผ ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ 100๋ณด๋‹ค ํด ๋•Œ poll ํ•˜์—ฌ 100์„ ๋บ€ ํ›„ ๋‹ค์‹œ ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•œ๋‹ค. 100 ์ดํ•˜๋ผ๋ฉด ์ ˆ๋„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•œ๋‹ค. 

 

์ตœ์ข… flag ๊ฐ’์ด true๋ผ๋ฉด "impossible"์„ ์ถœ๋ ฅํ•˜๊ณ , false๋ผ๋ฉด ์šฐ์„ ์ˆœ์œ„ ํ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์„ poll ํ•˜์—ฌ ๋ฐฐ์—ด์— ๋ชฉ๋ก ์ˆœ์œผ๋กœ ์ €์žฅํ•œ ๋’ค ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. 



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 27589_Streets Ahead  (0) 2025.12.17
[Baekjoon] 6235_Argus  (0) 2025.12.16
[Baekjoon] 5872_Clumsy Cows  (0) 2025.12.15
[Baekjoon] 17047_Titlovi  (0) 2025.12.12
[Baekjoon] 10331_Miscalculation  (0) 2025.12.10