-
반응형
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"; } } }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준OJ] 7490번 0 만들기 (0) 2021.07.26 [백준OJ] 18809번 Gaaaaaaaaaarden (0) 2021.07.24 [백준OJ] 5014번 스타트링크 (0) 2021.07.22 [백준OJ] 6996번 애너그램 (0) 2021.07.22 [백준OJ] 2637번 장난감 조립 (0) 2021.07.21 댓글