문제 링크: https://www.acmicpc.net/problem/4659
문자열이 최대 20글자로, 길지 않으니 적당히 문자열을 여러번 순회해보면 됩니다.
#include <bits/stdc++.h>
using namespace std;
inline bool is_vowel(char c) {
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
string s;
while (cin >> s) {
if (s == "end") break;
// 1.
bool has_vowel = false;
for (const auto& c : s)
if (is_vowel(c)) {
has_vowel = true;
break;
}
if (!has_vowel) {
cout << "<" << s << "> is not acceptable.\n";
continue;
}
// 2.
const auto& sz = s.size();
if (sz >= 3) {
bool flag = true;
for (int i = 0; i < sz - 2; ++i) {
if (is_vowel(s[i]) == is_vowel(s[i + 1]) && is_vowel(s[i + 1]) == is_vowel(s[i + 2])) {
flag = false;
break;
}
}
if (!flag) {
cout << "<" << s << "> is not acceptable.\n";
continue;
}
}
// 3.
if (sz >= 2) {
bool flag = true;
for (int i = 0; i < sz - 1; ++i) {
if ((s[i] != 'o' && s[i] != 'e') && s[i] == s[i + 1]) {
flag = false;
break;
}
}
if (!flag) {
cout << "<" << s << "> is not acceptable.\n";
continue;
}
}
cout << "<" << s << "> is acceptable.\n";
}
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 6549: 히스토그램에서 가장 큰 직사각형 (0) | 2020.07.23 |
---|---|
[백준][C++] 3460: 이진수 (0) | 2020.07.22 |
[백준][C++] 14430: 자원 캐기 (0) | 2020.07.22 |
[백준][C++] 14499: 주사위 굴리기 (0) | 2020.07.22 |
[백준][C++] 14503: 로봇 청소기 (0) | 2020.07.21 |