๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 9440_์ˆซ์ž ๋”ํ•˜๊ธฐ

๋ฟŒ์•ผ._. 2024. 3. 29. 00:20

Silver II

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

< ์ˆซ์ž ๋”ํ•˜๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์ž‘์€ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ๋ฝ‘์•„ ๋‚˜์—ดํ•œ๋‹ค. ๋งŒ์•ฝ 1 2 7 8 9๋ผ๋ฉด 179, 28๋กœ ๋‘ ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.

 

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

public class _9440_ { // ์ˆซ์ž ๋”ํ•˜๊ธฐ

	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;

		String input = "";
		int zero = 0;
		PriorityQueue<Integer> queue = new PriorityQueue<>();

		while (!(input = (bf.readLine())).equals("0")) {
			st = new StringTokenizer(input);

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

			for (int i = 0; i < n; i++) {
				int num = Integer.parseInt(st.nextToken());

				if (num != 0) {
					queue.add(num);
				} else {
					zero += 1;
				}
			}

			String str1 = "";
			String str2 = "";
			boolean flag = false;

			while (!queue.isEmpty()) {
				if (!flag) {
					if (str1.length() > 0 && zero > 0) {
						str1 += "0";
						zero -= 1;
					} else {
						str1 += Integer.toString(queue.poll());
					}
					flag = true;
				} else {
					if (str2.length() > 0 && zero > 0) {
						str2 += "0";
						zero -= 1;
					} else {
						str2 += Integer.toString(queue.poll());
					}
					flag = false;
				}
			}

			while (zero > 0) {
				if (str1.length() > str2.length()) {
					str2 += "0";
				} else {
					str1 += "0";
				}
				zero-=1;
			}

			bw.write((Integer.parseInt(str1) + Integer.parseInt(str2)) + "\n");

		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
input : ์ž…๋ ฅ ๊ฐ’
zero : ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜ ์ค‘์— 0์˜ ๊ฐœ์ˆ˜
queue : ์šฐ์„ ์ˆœ์œ„ ํ
n : ์—ฐ์Šต๋ฌธ์ž์—์„œ ์‚ฌ์šฉ๋  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜
num : ์‚ฌ์šฉ๋  n๊ฐœ์˜ ์ˆซ์ž
str1, str2 : ๋งŒ๋“  ๋‘ ์ˆซ์ž

 

0์ด ์•„๋‹ ๋•Œ๊นŒ์ง€ ์—ฐ์Šต ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ฐ ์ค„์˜ ์ฒซ ๋ฒˆ์งธ ๋‚˜์˜ค๋Š” ์ˆ˜๋ฅผ ์—ฐ์Šต๋ฌธ์ œ์—์„œ ์‚ฌ์šฉ๋  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์—ฐ์Šต ๋ฌธ์ž์—์„œ ์‚ฌ์šฉ๋  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ 0์ด๋ฉด ์šฐ์„ ์ˆœ์œ„ ํ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  zero๊ฐ’์„ 1 ์ฆ๊ฐ€ํ•œ๋‹ค. 

 

์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) flag ๊ฐ’์ด false์ด๊ณ  ๋งŒ์•ฝ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๊ณ  zero ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด 0์„ ์ถ”๊ฐ€ํ•œ๋‹ค. str1 ๊ธธ์ด๊ฐ€ 0์ด๊ฑฐ๋‚˜ zero๊ฐ’์ด 0์ด๋ผ๋ฉด str1์— ์šฐ์„ ์ˆœ์œ„ ํ ๊ฐ’์„ ๋ฝ‘์•„ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค. 

2) flag ๊ฐ’์ด true์ด๊ณ  ๋งŒ์•ฝ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๊ณ  zero ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด 0์„ ์ถ”๊ฐ€ํ•œ๋‹ค. str2 ๊ธธ์ด๊ฐ€ 0์ด๊ฑฐ๋‚˜ zero ๊ฐ’์ด 0์ด๋ผ๋ฉด str2์— ์šฐ์„ ์ˆœ์œ„ ํ ๊ฐ’์„ ๋ฝ‘์•„ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์œ„ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์—๋„ zero ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด zero ๊ฐ’์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) str1์˜ ๊ธธ์ด๊ฐ€ str2์˜ ๊ธธ์ด๋ณด๋‹ค ๊ธธ๋‹ค๋ฉด str2์— 0์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

2) str2์˜ ๊ธธ์ด๊ฐ€ str1์˜ ๊ธธ์ด๋ณด๋‹ค ๊ธธ๋‹ค๋ฉด str1์— 0์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

3) zero ๊ฐ’์„ 1 ๊ฐ์†Œํ•œ๋‹ค.

 

๊ตฌํ•œ ๋‘ ๊ฐ’์„ ๋”ํ•œ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค.