문제
도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다.
영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하기 위해 종종 쓴다.
여기엔 규칙이 있는데, 맨 앞글자가 모음이 아닐때 까지 맨 앞 글자를 어미로 돌린 후 그 끝에 ay를 붙여서 완성한다. 예를 들면 frog는 ogfray이 된다. 만약 맨 앞자음이 없는 apple과 같은 경우는 끝에 ay만 붙여 appleay가 된다. 또는, 단어에 모음이 없는 경우에도 단어의 끝에 ay만 붙인다.
주어진 단어를 피그라틴어로 바꾸는 프로그램을 작성하시오.
입력
한 줄에 하나의 단어씩 주어진다. 그리고 마지막 줄에 #을 입력받고 끝낸다.
주어진 단어는 20자를 넘지 않고 공백없이 소문자로만 이루어져있다. 여기서 모음이란 'a', 'e', 'i', 'o', 'u' 를 말한다.
출력
한 줄에 하나씩 피그라틴어를 출력한다.
소스 코드
#include <iostream>
using namespace std;
int main() {
string a, b ="";
int count;
while(1)
{
cin >> a;
if ( a == "#" ) break;
count = a.size();
for ( int i = 0; i < a.size(); i++ ) {
if ( a[i] == 'a' || a[i] == 'e' ||
a[i] == 'i' || a[i] == 'o' || a[i] == 'u')
{
count = i;
break;
}
}
for ( int i = count; i < a.size(); i++ ) b += a[i];
for ( int i = 0; i < count; i++) b += a[i];
b += "ay\n";
}
cout << b;
}
문제 풀이
[ a (입력 받을 하나의 단어, #을 입력하면 종료), b (문제의 조건에 따라 마지막으로 출력할 피그라틴어), count (처음으로 모음이 나오는 index의 값 ]
1. 반복문이 종료( #이 입력될 때까지)될 때까지 a를 입력받는다.
2. count의 기본값을 입력 받은 하나의 단어의 크기로 설정하고, 단어에서 처음으로 모음이 나오는 index의 값으로 바꾼다. (없으면 그대로 a.size()로 설정되는데, 이렇게 잡은 이유는 아래에서 피그라틴어로 바꿔주는 과정에서 count의 값을 사용하기 때문)
3. 모음이 나온 위치 뒤에 존재하는 부분을 새로운 b에 넣고, 모음이 나온 위치 앞에 존재하는 부분을 그 뒤에 붙인 후 \n으로 다음 피그라틴어를 입력 받을 준비를 한다.
4. 이를 반복하다가, #으로 반복문이 종료되면, b를 출력하고 종료한다.
'Koala - 13기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python]10824:네 수 (0) | 2024.01.21 |
---|---|
[백준/C++] 14582: 오늘도 졌다 (0) | 2024.01.21 |
[백준/C++] 9012: 괄호 (0) | 2024.01.21 |
[백준/python] 1673번 치킨쿠폰 (0) | 2024.01.21 |
[백준/Python] 3449번 : 해밍 거리 (0) | 2024.01.21 |