๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10770_Rövarspråket

๋ฟŒ์•ผ._. 2025. 5. 15. 22:05
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/10770)

< Rövarspråket >

 

๋ฌธ์ œ ํ’€์ด 

 

์กฐ๊ฑด)

1) ์ž์Œ์ผ ๊ฒฝ์šฐ

: ์ž์Œ ์ž์‹  ๊ทธ๋Œ€๋กœ 

: ์ž์Œ๊ณผ ๊ฐ€๊นŒ์šด ๋ชจ์Œ์„ ์ฐพ์•„ ์ถ”๊ฐ€ But ์•ž, ๋’ค๋กœ ๊ฐ€๊นŒ์šด ๋ชจ์Œ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์•ž์— ์žˆ๋Š” ๋ชจ์Œ์„ ์ถ”๊ฐ€

: ๋‹ค์Œ ์ž์Œ์„ ์ฐพ์•„ ์ถ”๊ฐ€ (z์˜ ๋‹ค์Œ ์ž์Œ์€ z์ด๋‹ค)

 

2) ๋ชจ์Œ์ผ ๊ฒฝ์šฐ

: ๋ชจ์Œ ์ž์‹  ๊ทธ๋Œ€๋กœ 

 

my solution (Java)

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

public class _10770_ { // Rövarspråket

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		String str = bf.readLine();

		String result = "";
		char arr[] = { 'a', 'e', 'i', 'o', 'u' };

		for (int i = 0; i < str.length(); i++) {
			boolean flag = false;
			char x = str.charAt(i);

			result += x;

			for (int j = 0; j < 5; j++) {
				if (x == arr[j]) {
					flag = true;
					break;
				}
			}

			if (!flag) {
				int a = 0, b = 0;

				char temp = x;
				while (Character.isAlphabetic(temp)) {
					temp = (char) (temp - 1);
					a += 1;
					for (int j = 0; j < 5; j++) {
						if (temp == arr[j]) {
							flag = true;
							break;
						}
					}
					if (flag) {
						break;
					}
				}

				if (!flag) {
					a = Integer.MAX_VALUE;
				}

				flag = false;
				temp = x;
				while (Character.isAlphabetic(temp)) {
					temp = (char) (temp + 1);
					b += 1;
					for (int j = 0; j < 5; j++) {
						if (temp == arr[j]) {
							flag = true;
							break;
						}
					}
					if (flag) {
						break;
					}
				}

				if (!flag) {
					b = Integer.MAX_VALUE;
				}

				if (a <= b) {
					result += (char) (x - a);
				} else {
					result += (char) (x + b);
				}

				temp = x;
				if (temp == 'z') {
					result += 'z';
				} else {
					while (Character.isAlphabetic(temp)) {
						temp = (char) (temp + 1);
						flag = false;
						for (int j = 0; j < 5; j++) {
							if (temp == arr[j]) {
								flag = true;
								break;
							}
						}
						if (!flag) {
							result += temp;
							break;
						}
					}
				}
			}
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
str : ์ž…๋ ฅ๊ฐ’
result : ๊ฒฐ๊ด๊ฐ’
arr : ๋ชจ์Œ
flag : ํŒ๋ณ„ ์—ฌ๋ถ€
x : ํ˜„์žฌ ๊ธ€์ž
a, b : ํ˜„์žฌ ์œ„์น˜์—์„œ ์•ž, ๋’ค๋กœ ๊ฐ€๊นŒ์šด ๋ชจ์Œ ๊ฑฐ๋ฆฌ

 

์ž…๋ ฅ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ž…๋ ฅ๊ฐ’์„ ์ „์ฒด ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‹ค์Œ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

 

1) ํ˜„์žฌ ๊ธ€์ž result์— ์ถ”๊ฐ€

2) ํ˜„์žฌ ๊ธ€์ž๊ฐ€ ๋ชจ์Œ์ธ์ง€ ์ž์Œ์ธ์ง€ ํŒ๋ณ„ ํ›„ ๋ชจ์Œ์ด๋ผ๋ฉด PASS

3) ์ž์Œ์ด๋ผ๋ฉด ํ˜„์žฌ ๊ธ€์ž์—์„œ ์•ž์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ชจ์Œ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ, ๋’ค๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ชจ์Œ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ -> ๋” ๊ฐ€๊นŒ์šด ์œ„์น˜์˜ ๋ชจ์Œ์„ result์— ์ถ”๊ฐ€ -> ํ˜„์žฌ ๊ธ€์ž ๋’ค๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋‹ค์Œ ์ž์Œ์„ ์ฐพ์•„ result์— ์ถ”๊ฐ€

 

์ตœ์ข… result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.