๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1283_๋‹จ์ถ•ํ‚ค ์ง€์ •

๋ฟŒ์•ผ._. 2023. 12. 7. 13:54

Silver I

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

< ๋‹จ์ถ•ํ‚ค ์ง€์ • >

 

๋ฌธ์ œ ํ’€์ด 

 

๋จผ์ € ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋‹จ์ถ•ํ‚ค์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋‹จ์ถ•ํ‚ค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค. ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ๋‹จ์ถ•ํ‚ค๋ผ๋ฉด ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์•ŒํŒŒ๋ฒณ์„ ๋ณด๋ฉด์„œ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ • ์•ˆ ๋œ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

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

public class _1283_ { // ๋‹จ์ถ•ํ‚ค ์ง€์ •

	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;

		int n = Integer.parseInt(bf.readLine());

		Set<Character> set = new HashSet<>();
		ArrayList<String> list = new ArrayList<>();
		boolean flag = false;

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			flag = false;
			while (st.hasMoreTokens()) {
				String str = st.nextToken();
				if (flag) {
					bw.write(str+" ");
				} else if (!set.contains(Character.toUpperCase(str.charAt(0)))) {
					set.add(Character.toUpperCase(str.charAt(0)));
					str = "[" + str.charAt(0) + "]" + str.substring(1, str.length());
					if (!list.isEmpty()) {
						for (int j = 0; j < list.size(); j++) {
							bw.write(list.get(j) + " ");
						}
						list.clear();
					}
					bw.write(str + " ");
					flag = true;
				} else {
					list.add(str);
				}
			}
			if (!flag) {
				for (int j = 0; j < list.size(); j++) {
					String str = list.get(j);
					if (!flag) {
						for (int k = 0; k < str.length(); k++) {
							if (!set.contains(Character.toUpperCase(str.charAt(k)))) {
								set.add(Character.toUpperCase(str.charAt(k)));
								str = str.substring(0, k) + "[" + str.charAt(k) + "]"
										+ str.substring(k + 1, str.length());
								flag = true;
								break;
							}
						}
					}
					bw.write(str + " ");
				}
			}
			list.clear();
			bw.write("\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ์˜ต์…˜์˜ ๊ฐœ์ˆ˜
set : ๋‹จ์ถ•ํ‚ค ๋ชจ์Œ
list : ํ•˜๋‚˜์˜ ์˜ต์…˜ ๋ฌธ์ž์—ด ์ €์žฅ
flag : ๋‹จ์ถ•ํ‚ค ์„ค์ • ์—ฌ๋ถ€
str : ๋ฌธ์ž์—ด

 

ํ•˜๋‚˜์˜ ์˜ต์…˜์— ๋Œ€ํ•ด ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋‹จ์ถ•ํ‚ค์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•œ๋‹ค. ๋‹จ์ถ•ํ‚ค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •ํ–ˆ์œผ๋ฉด ๋‚˜๋จธ์ง€๋Š” ํ™•์ธํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋งŒ์•ฝ ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‹จ์–ด๋ฅผ ์™ผ์ชฝ๋ถ€ํ„ฐ ์‚ดํ”ผ๋ฉด์„œ ๋‹จ์ถ•ํ‚ค๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ์–ด๋ฅผ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ณด๋ฉด์„œ ๋‹จ์ถ•ํ‚ค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹จ์ถ•ํ‚ค๋กœ ์„ค์ •ํ•˜๊ณ  ์œ„์™€ ๊ฐ™์ด ๋‚˜๋จธ์ง€๋Š” ํ™•์ธํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.


๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ์›๋ž˜ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๊ณต๋ฐฑ์„ ์ž˜ ์ถœ๋ ฅํ•ด์ค˜์•ผ ํ•œ๋‹ค.


 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 1189_์ปด๋ฐฑํ™ˆ  (1) 2023.12.11
[Baekjoon] 21937_์ž‘์—…  (1) 2023.12.08
[Baekjoon] 1446_์ง€๋ฆ„๊ธธ  (0) 2023.12.06
[Baekjoon] 4883_์‚ผ๊ฐ ๊ทธ๋ž˜ํ”„  (2) 2023.12.05
[Baekjoon] 12026_BOJ ๊ฑฐ๋ฆฌ  (1) 2023.12.04