도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다.
영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하기 위해 종종 쓴다.
여기엔 규칙이 있는데, 맨 앞글자가 모음이 아닐때 까지 맨 앞 글자를 어미로 돌린 후 그 끝에 ay를 붙여서 완성한다. 예를 들면 frog는 ogfray이 된다. 만약 맨 앞자음이 없는 apple과 같은 경우는 끝에 ay만 붙여 appleay가 된다. 또는, 단어에 모음이 없는 경우에도 단어의 끝에 ay만 붙인다.
주어진 단어를 피그라틴어로 바꾸는 프로그램을 작성하시오.
한 줄에 하나의 단어씩 주어진다. 그리고 마지막 줄에 #을 입력받고 끝낸다.
주어진 단어는 20자를 넘지 않고 공백없이 소문자로만 이루어져있다. 여기서 모음이란 'a', 'e', 'i', 'o', 'u' 를 말한다.
한 줄에 하나씩 피그라틴어를 출력한다.
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool moeum(char c) { // 모음 체크
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
return true;
}
else {
return false;
}
}
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string str;
int i, idx;
while(true) {
idx = 0;
cin >> str;
if (str == "#") { return 0; } // 끝
for(i = 0; i < str.length(); i++) {
if(i == 0 && moeum(str[i])) { // 첫번째 알파벳이 모음인 경우 바로 ay 붙이기
break;
}
if(moeum(str[i])) {
idx = i;
break;
}
}
if(idx == 0) {
cout << str;
}
else {
for(i = idx; i < str.length(); i++) {
cout << str[i];
}
for(i =0; i < idx; i++) {
cout << str[i];
}
}
cout << "ay\n";
}
return 0;
}