※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 10770번 문제인 Rövarspråket이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/10770 

 

10770번: Rövarspråket

In Sweden, there is a simple child’s game similar to Pig Latin called Rövarspråket (Robbers Language). In the CCC version of Rovarspr ¨ aket, every consonant is replaced by three letters, in the following order: the consonant itself; the vowel closest

www.acmicpc.net

주어지는 문자열의 각 문자에 대하여 (1) 해당 문자가 모음이라면 그 모음만을 출력하고, (2) 해당 문자가 자음이라면 (2-1) 그 자음을 그대로 출력한 뒤 (2-2) 해당 문자와 가장 가까운 모음(여러 개 존재한다면 앞의 것)을 출력하고 (2-3) 해당 문자 다음 자음(단, 'z'의 경우 'z')을 출력하는 문제이다.

 

각 문자는 정수(아스키 코드)로 나타난다는 점을 이용해, 각 문자가 모음인지를 판단하기 위한 배열 is_vowel을 아래와 같이 만들면 구현을 간편하게 할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string s;
bool is_vowel[200];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	is_vowel['a'] = is_vowel['e'] = is_vowel['i'] = is_vowel['o'] = is_vowel['u'] = 1;

	cin >> s;
	for (auto& l : s) {
		cout << l;
		if (is_vowel[l]) continue;
		int L = l, R = l;
		while (1) {
			L--;
			if (is_vowel[L]) {
				cout << (char)L;
				break;
			}
			R++;
			if (is_vowel[R]) {
				cout << (char)R;
				break;
			}
		}

		if (l < 'z') {
			l++;
			if (is_vowel[l]) l++;
		}
		cout << l;
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 13339 // C++] XOR 수열  (1) 2023.12.19
[BOJ 11292 // C++] 키 큰 사람  (1) 2023.12.18
[BOJ 16900 // C++] 이름 정하기  (0) 2023.12.16
[BOJ 14718 // C++] 용감한 용사 진수  (0) 2023.12.15
[BOJ 14717 // C++] 앉았다  (0) 2023.12.14

+ Recent posts