※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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;
}
}
'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 |