๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 16206_๋กค์ผ€์ดํฌ

๋ฟŒ์•ผ._. 2024. 2. 29. 10:07

Silver I

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

< ๋กค์ผ€์ดํฌ >

 

๋ฌธ์ œ ํ’€์ด 

 

๊ธธ์ด๊ฐ€ 10์ธ ๋กค์ผ€์ดํฌ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋กค์ผ€์ดํฌ๋ฅผ ์ž๋ฅด๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ–ˆ๋‹ค.

1) 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฐ’์„ ๋จผ์ € ์ž๋ฅด๊ธฐ

2) 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ์ž‘์€ ๊ฐ’์„ ๋จผ์ € ์ž๋ฅด๊ธฐ

 

์ด๋ ‡๊ฒŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ ์ด์œ ๋Š” 20๊ณผ 30์ด ์žˆ์„ ๋•Œ 20์€ ํ•œ ๋ฒˆ ์ž๋ฅด๋ฉด 10์„ 2๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ 30์„ ํ•œ ๋ฒˆ ์ž๋ฅด๋ฉด 10์„ 1๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class _16206_ { // ๋กค์ผ€์ดํฌ

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

		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		int answer = 0;
		PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				if (o1 % 10 == o2 % 10) {
					return o1 / 10 - o2 / 10;
				}
				return o1 % 10 - o2 % 10;
			}
		});

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			int num = Integer.parseInt(st.nextToken());
			if (num == 10) {
				answer += 1;
			} else if (num > 10) {
				queue.add(num);
			}
		}

		while (m > 0 && !queue.isEmpty()) {
			int num = queue.poll();

			num -= 10;
			answer += 1;
			m -= 1;
			if (num == 10) {
				answer += 1;
			} else if (num > 10) {
				queue.add(num);
			}
		}
		System.out.println(answer);
	}
}
๋ณ€์ˆ˜)
n, m : ๋กค์ผ€์ดํฌ ๊ฐœ์ˆ˜, ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜
answer : ๊ธธ์ด๊ฐ€ 10์ธ ๋กค์ผ€์ดํฌ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’
queue : ์šฐ์„ ์ˆœ์œ„ ํ

 

๋กค์ผ€์ดํฌ ๊ฐœ์ˆ˜, ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์–ด๋–ค ๋กค์ผ€์ดํฌ๋ฅผ ๋จผ์ € ์ž๋ฅผ ๊ฒƒ์ธ์ง€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•œ๋‹ค. 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๋กค์ผ€์ดํฌ๋ฅผ ๋จผ์ € ์ž๋ฅด๋˜, 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๋กค์ผ€์ดํฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ์ž๋ฅธ๋‹ค. n๊ฐœ์˜ ๋กค์ผ€์ดํฌ๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ๊ธธ์ด๊ฐ€ 10์ด๋ฉด answer+1, 10๋ณด๋‹ค ํฌ๋ฉด ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•œ๋‹ค. 10๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋‹ต๊ณผ ์ƒ๊ด€์—†์ด ๋•Œ๋ฌธ์ด๋‹ค. 

 

์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜์ธ m์ด 0๋ณด๋‹ค ํฌ๊ณ  ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) queue poll

2) ๋กค์ผ€์ดํฌ๋ฅผ 10๋งŒํผ ์ž๋ฅด๊ณ  answer+1, ์ž๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜-1

3) ์ž๋ฅด๊ณ  ๋‚จ์€ ๋กค์ผ€์ดํฌ์˜ ๊ธธ์ด๊ฐ€ 10์ด๋ผ๋ฉด answer+1, ์ž๋ฅด๊ณ  ๋‚จ์€ ๋กค์ผ€์ดํฌ์˜ ๊ธธ์ด๊ฐ€ 10๋ณด๋‹ค ํฌ๋‹ค๋ฉด queue์— ์ €์žฅ

 

๊ธธ์ด๊ฐ€ 10์ธ ๋กค์ผ€์ดํฌ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’ ์ถœ๋ ฅ