구현 문제입니다.
3가지 조건을 신경써서 구현해주면 됩니다.
1. 모음을 한가지 이상 포함하기.
2. 모음 또는 자음이 3개 연속 오면 안됨.
3. 같은 글자가 연속해서 오면 안됨. 하지만 oo, ee는 가능
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
bool m; // 모음 1번 입력됬는지
bool check; // 이전 결과가 모음, 자음
bool flag; // 결과
bool con; // 이번 결과가 모음인지, 자음인지
int count; // 3연속
string s;
char pre;
char v[5] = { 'a', 'e', 'i', 'o', 'u' };
while (1) {
m = false;
flag = false;
check = false;
count = 0;
cin >> s;
if (s == "end") {
break;
}
for (int i = 0; i < s.length(); ++i) {
con = false;
if (i != 0) { // 3번 조건
if (s[i] == s[i - 1] && s[i] != 'e' && s[i] != 'o') {
flag = true;
break;
}
}
for (int j = 0; j < 5; ++j) {
if (s[i] == v[j]) {
if (check == false) {
count = 0;
}
m = true;
check = true;
con = true;
++count;
}
}
if (!con) {
if (check == true) {
count = 0;
}
check = false;
++count;
}
if (count == 3) { // 2번 조건
flag = true;
break;
}
if (flag) {
break;
}
}
if (!m) { // 1번 조건
flag = true;
}
if (flag) {
cout << "<" << s << "> is not acceptable." << endl;
}
else {
cout << "<" << s << "> is acceptable." << endl;
}
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 1855번 암호 (0) | 2019.11.05 |
---|---|
[C++] 백준 14710번 고장난 시계 (0) | 2019.11.05 |
[C++] 백준 1996번 지뢰 찾기 (0) | 2019.11.04 |
[C++] 백준 2160번 그림 비교 (0) | 2019.11.04 |
[C++] 백준 2804번 크로스워드 만들기 (0) | 2019.11.04 |