문제풀이/백준oj
[백준OJ] 4659번 비밀번호 발음하기
Hyeon-Uk
2021. 7. 23. 12:15
반응형
https://www.acmicpc.net/problem/4659
4659번: 비밀번호 발음하기
좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp
www.acmicpc.net
-풀이-
모음인지 검사해주는 isVowels를 선언해준다.
bool isVowels(char a){
if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'){
return true;
}
else{
return false;
}
}
그런뒤, 조건에 맞춰서 검사를 해주면 된다. 사실 구현문제라 풀이를 해줄것이 없다.
-시간복잡도-
문자열의 길이를 S, 테스트 케이스의 개수를 T라하면 O(ST)가 된다.
-코드-
#include <algorithm>
#include<iostream>
#include<string>
using namespace std;
bool isVowels(char a){
if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'){
return true;
}
else{
return false;
}
}
bool isAcceptable(string st){
int vowels=0;
int sequenceV=0;
int sequenceC=0;
for(int i=0;i<st.size();i++){
//모음의 개수를 세어주고 , 모음이 연속 3개면 false
if(isVowels(st[i])){
vowels++;
sequenceV++;
sequenceC=0;
if(sequenceV==3){
return false;
}
}
//자음의 개수를 세어주고, 자음이 연속 3개면 false
else{
sequenceV=0;
sequenceC++;
if(sequenceC==3){
return false;
}
}
//e 와 o 를 제외한 연속된 2개 단어면 false
if(i!=0){
if(st[i]==st[i-1]&&st[i]!='e'&&st[i]!='o'){
return false;
}
}
}
if(vowels==0) return false;//모음이 0개면 false
return true;
}
int main(){
cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
while(true){
string st;
cin>>st;
if(st=="end") break;
if(isAcceptable(st)){
cout<<"<"<<st<<"> is acceptable.\n";
}
else{
cout<<"<"<<st<<"> is not acceptable.\n";
}
}
}
반응형