๋ฌธ์ (์ถ์ฒ: 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 ๊ฐ์ํ๋ค.
๊ตฌํ ๋ ๊ฐ์ ๋ํ ํ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1531_ํฌ๋ช (0) | 2024.04.02 |
---|---|
[Baekjoon] 14232_๋ณด์ ๋๋ (1) | 2024.04.01 |
[Baekjoon] 2594_๋์ด๊ณต์ (0) | 2024.03.28 |
[Baekjoon] 1730_ํํ (1) | 2024.03.27 |
[Baekjoon] 2167_2์ฐจ์ ๋ฐฐ์ด์ ํฉ (0) | 2024.03.26 |