๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/6379)
< Scramble Sort >
๋ฌธ์ ํ์ด
๋ฌธ์์ด, ์ซ์๋ฅผ ์ ๋ ฌํ๋ ์๋ ๋ฌธ์์ด, ์ซ์ ๊ฐ ์์น์์ ์ ๋ ฌ๋์ด์ผ ํ๋ค.
ArrayList 3๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
1) ๊ฐ ์์น๊ฐ ๋ฌธ์์ด์ธ์ง ์ซ์์ธ์ง ํ๋ณํ ArrayList
2) ๋ฌธ์์ด๋ง ์ ์ฅํ ArrayList
3) ์ซ์๋ง ์ ์ฅํ ArrayList
2)์ 3)์ ArrayList๋ฅผ ์ ๋ ฌํด 1)์ ์์์ ๋ง๊ฒ ์ถ๋ ฅํ๋ค.
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.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
public class _6379_ { // Scramble Sort
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 str = "";
while (!(str = bf.readLine()).equals(".")) {
st = new StringTokenizer(str, ", ");
ArrayList<Integer> index = new ArrayList<>();
ArrayList<String> alphabet = new ArrayList<>();
ArrayList<Long> number = new ArrayList<>();
while (st.hasMoreTokens()) {
String temp = st.nextToken();
if (!st.hasMoreTokens()) {
temp = temp.substring(0, temp.length() - 1);
}
if (Character.isDigit(temp.charAt(0)) || temp.charAt(0) == '-') {
index.add(1);
number.add(Long.parseLong(temp));
} else {
index.add(0);
alphabet.add(temp);
}
}
Collections.sort(alphabet, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
Collections.sort(number);
int idx1 = 0, idx2 = 0;
for (int i = 0; i < index.size(); i++) {
if (index.get(i) == 0) {
bw.write(alphabet.get(idx1++));
} else {
bw.write(number.get(idx2++)+"");
}
if (i < index.size() - 1) {
bw.write(", ");
} else {
bw.write(".\n");
}
}
}
bw.flush();
}
}
๋ณ์)
str : ์ ๋ ฅ๊ฐ
index : ๊ฐ ์์น๊ฐ ๋ฌธ์์ด์ธ์ง ์ซ์์ธ์ง ํ๋ณํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ArrayList
alphabet, nubmer : ๋ฌธ์์ด๋ง, ์ซ์๋ง ์ ์ฅํ ArrayList
temp : ํ ํฐ ๊ฐ
idx1, idx2 : alphabet, number ArrayList ์์น
์ ๋ ฅ๊ฐ์ด "."์ด ์๋ ๋๊น์ง ์ ๋ ฅ๋ฐ์ผ๋ฉฐ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ์ ๋ ฅ๊ฐ์ ", " ๊ธฐ์ค์ผ๋ก ์๋ฅธ๋ค
2) ํ ํฐ์ด ์์ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
2-1) ๋ง์ฝ ๋ง์ง๋ง ํ ํฐ์ด๋ผ๋ฉด "."์ ์ ๊ฑฐํ๋ค.
2-2) ํ ํฐ ๊ฐ์ด ์ซ์๋ผ๋ฉด index์ 1์ ์ ์ฅํ๊ณ number์ ๊ฐ์ ์ ์ฅํ๋ค.
2-3) ํ ํฐ ๊ฐ์ด ๋ฌธ์์ด์ด๋ผ๋ฉด index์ 0์ ์ ์ฅํ๊ณ alphabet์ ๊ฐ์ ์ ์ฅํ๋ค.
3) alphabet๊ณผ number์ ๊ฐ๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
4) index๋ฅผ ํ์ํ๋ฉฐ 0์ผ ๋ alphabet์ ์ถ๋ ฅํ๊ณ , 1์ผ ๋ number์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 3277_DOMAINS (0) | 2025.11.07 |
|---|---|
| [Baekjoon] 10106_The Geneva Confection (0) | 2025.11.06 |
| [Baekjoon] 29882_Ranking (0) | 2025.11.04 |
| [Baekjoon] 21149_Unread Messages (0) | 2025.11.03 |
| [Baekjoon] 5741_Soccer League (0) | 2025.10.31 |