[C++] BOJ 9226번: 도깨비말

ㅎㅎ·2023년 8월 17일
0

BOJ

목록 보기
34/65

BOJ 9226번: 도깨비말

문제

도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다.

영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하기 위해 종종 쓴다.

여기엔 규칙이 있는데, 맨 앞글자가 모음이 아닐때 까지 맨 앞 글자를 어미로 돌린 후 그 끝에 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;
}

profile
Backend

0개의 댓글