๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 6379_Scramble Sort

๋ฟŒ์•ผ._. 2025. 11. 5. 00:39
๋ฌธ์ œ(์ถœ์ฒ˜: 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