๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 4446_ROT13

๋ฟŒ์•ผ._. 2025. 2. 19. 14:53
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/4446)

< ROT13 >

 

๋ฌธ์ œ ํ’€์ด 

 

[a, i, y, e, o, u] ๊ฐ ์œ„์น˜์—์„œ 3๋ฒˆ์งธ ์˜ค๋ฅธ์ชฝ ์œ„์น˜์— ์žˆ๋Š” ๋ชจ์Œ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

[b, k, x, z, n, h, d, c, w, g, p, v, j, q, t, s, r, l, m, f] ๊ฐ ์œ„์น˜์—์„œ 10๋ฒˆ์งธ ์˜ค๋ฅธ์ชฝ ์œ„์น˜์— ์žˆ๋Š” ์ž์Œ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ

 

* ์‚ฌ์ดํด์ด๋ผ์„œ ๋งˆ์ง€๋ง‰๊ณผ ์ฒซ ์œ„์น˜๋Š” ์„œ๋กœ ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;

public class _4446_ { // ROT13

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
		String str = "";
		Character v[] = { 'a', 'i', 'y', 'e', 'o', 'u' };
		Character c[] = { 'b', 'k', 'x', 'z', 'n', 'h', 'd', 'c', 'w', 'g', 'p', 'v', 'j', 'q', 't', 's', 'r', 'l', 'm',
				'f' };
                
		while ((str = bf.readLine()) != null) {
			String result = "";
			for (int i = 0; i < str.length(); i++) {
				if (!Character.isAlphabetic(str.charAt(i))) {
					result += str.charAt(i);
				} else {
					char x = Character.toLowerCase(str.charAt(i));
					int idx = -1;
                    
					for (int j = 0; j < v.length; j++) {
						if (v[j] == x) {
							idx = j + 3;
							if (idx >= v.length) {
								idx -= v.length;
							}
							x = v[idx];
							break;
						}
					}
					if (idx == -1) {
						for (int j = 0; j < c.length; j++) {
							if (c[j] == x) {
								idx = j + 10;
								if (idx >= c.length) {
									idx -= c.length;
								}
								x = c[idx];
								break;
							}
						}
					}
                    
					if (Character.isUpperCase(str.charAt(i))) {
						result += Character.toUpperCase(x);
					} else {
						result += x;
					}
				}
			}
			bw.write(result + "\n");
		}
		bw.flush();
	}
}

 

๋ณ€์ˆ˜)
str : ์ž…๋ ฅ ๋ฌธ์žฅ
v, c : ๋ชจ์Œ, ์ž์Œ ๋ฐฐ์—ด
result : ROT13์„ ์˜์–ด๋กœ ๋ฐ”๊พผ ๋ฌธ์žฅ
idx : ์ธ๋ฑ์Šค

 

์ž…๋ ฅ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฌธ์žฅ์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉฐ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ๋ฌธ์žฅ์„ ์‚ดํŽด๋ณด๋ฉฐ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

2) ์•ŒํŒŒ๋ฒณ์ด๋ผ๋ฉด ๋ชจ์Œ์ธ์ง€ ์ž์Œ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ๋ชจ์Œ์ด๋ผ๋ฉด ํ˜„์žฌ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 3๋ฒˆ์งธ ์žˆ๋Š” ๋ชจ์Œ์œผ๋กœ ๋ฐ”๊พธ๊ณ , ์ž์Œ์ด๋ผ๋ฉด ํ˜„์žฌ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 10๋ฒˆ์งธ ์žˆ๋Š” ์ž์Œ์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

3) ์›๋ž˜ ๋ฌธ์ž์˜ ๋Œ€์†Œ๋ฌธ์ž ์—ฌ๋ถ€์— ๋งž๊ฒŒ ์œ ์ง€ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.