728x90
SMALL
https://www.acmicpc.net/problem/4659
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <iostream>
#include <string>
using namespace std;
bool checkAEIOU(string str){ //모음 없으면 false
if(str.find("a") == string::npos && str.find("e") == string::npos && str.find("i") == string::npos && str.find("o") == string::npos && str.find("u") == string::npos){
return false;
}
return true;
}
int checkCV(char a){ //모음인지 자음인지
switch(a){
case 'a': case 'e' : case 'i' : case 'u': case 'o': return 2;
default : return 1;
}
}
int main(void){
string password;
bool flag = true;
cin >> password;
while(password!="end"){
flag = true;
if(!checkAEIOU(password)){ //모음 없으면 여기서 거른다.
cout << "<" << password << "> is not acceptable." << endl;
cin >> password;
continue;
}
if((password.size() == 2) && (password[0] == password[1]) && (password[0]!= 'e' && password[0]!= 'o')){
cout << "<" << password << "> is not acceptable." << endl;
cin >> password;
continue;
}
else if(password.size() > 2){
for(int i = 0 ; i < (password.size() - 2) ; i++){//3 -> 1, 4 -> 2, 5 -> 3 ...
if(password[i] != 'e' && password[i] != 'o'){
if(password[i] == password[i+1]){
flag = false;
break;
}
}
if(password[i+1] != 'e' && password[i+1] != 'o'){
if(password[i+1] == password[i+2]){
flag = false;
break;
}
}
if(checkCV(password[i]) == checkCV(password[i+1]) && checkCV(password[i+1]) == checkCV(password[i+2])){
flag = false;
break;
}
}
}
if(flag) cout << "<" << password << "> is acceptable." << endl;
else cout << "<" << password << "> is not acceptable." << endl;
cin >> password;
}
return 0;
}
|
cs |
문제 풀이
세 가지 조건을 만족시켜야한다.1. 모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다.
- 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다.
- 같은 글자가 연속적으로 두번 오면 안되나, ee 와 oo는 허용한다.
모음이 없을 경우 바로 처리해주고 알파벳 개수가 3개가 넘어갈때만 for문을 수행하게 했다.
그래서 한번에 세 문자씩 접근하여 모음 혹은 자음이 연속으로 3개가 오는지 확인했다.
비교, 논리 연산자 코드에서 계속 실수가 발생한다. 정신차리자 ㅡㅡ
LIST
'알고리즘' 카테고리의 다른 글
LeetCode : : 14번 Longest Common Prefix - C++ 풀이 (0) | 2022.01.13 |
---|---|
백준 : : 8958번 OX퀴즈 - C++ 풀이 (0) | 2022.01.11 |
백준 : : 1159번 농구 경기 - C++ 풀이 (0) | 2022.01.10 |
LeetCode : : 1029번 Two City Scheduling - C++ 풀이 (0) | 2022.01.10 |
백준 : : 2447번 별 찍기(재귀) - C++ 풀이 (0) | 2022.01.08 |