문제
문제 설명
단어의 맨 앞 글자가 모음(a, e, i, o, u)일 때 까지 글자를 뒤로 넘긴다. (frog -> rogf -> ogfr)
그런 다음 단어 뒤에 'ay'를 붙여 완성한다. (ogfray)
코드
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cctype>
using namespace std;
int main() {
char vowel[] = {'a', 'e', 'i', 'o', 'u'};
string word, tmp;
while (1) {
cin >> word;
if (word == "#") break;
int cnt = 0, notfound = 0;
for (int i = 0; i < word.size(); i++) {
if (find(vowel, vowel + 5, word[i]) != vowel + 5) {
cnt++; //cnt = 1 이라면 처음으로 모음이 나왔을 때를 얘기함.
if (cnt == 1) {
tmp = word.substr(0, i);
cout << word.replace(0, i, "") << tmp << "ay" << endl;
break;
}
}
else notfound++;
}
if (notfound == word.size() && cnt == 0) cout << word << "ay" << endl;
}
return 0;
}
문제 풀이
문자열을 계속 입력받고 만약 그 문자열이 '#' 이라면 입력을 더 이상 받지 않는다.
입력받은 문자열 word 변수의 0번째 인덱스부터 마지막 인덱스까지 반복해서 모음을 찾는다.
모음을 찾을 때 find 함수를 사용했다.
처음으로 모음이 등장하면 그 전까지의 글자들을 tmp라는 string 변수에 저장하고 word 변수에서는 없애준다.
tmp에 저장할 때는 substr 함수로, word에서 없애줄 때는 replace 함수를 사용했다.
이를 차례대로 출력하면 된다.
그러나 예외의 상황으로 모음이 아예 없는 경우가 있다. (입력이 'v'라거나 'cvc' 등등..)
이럴 때에는 단순히 문자열 뒤에 'ay'만 붙이면 된다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 1874번 스택 수열 (0) | 2023.01.29 |
---|---|
[백준 / C++] 1316번: 그룹 단어 체커 (0) | 2023.01.28 |
[백준/C++] 13235번 팰린드롬 (0) | 2023.01.27 |
[백준/python] 2789번 : 유학 금지 (0) | 2023.01.27 |
[백준/python] #4949 균형잡힌 세상 (0) | 2023.01.26 |