728x90

https://www.acmicpc.net/problem/4659

 

4659번: 비밀번호 발음하기

문제 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtpzyo 같은 비밀번호를 무작위로 부여해 주기도 하지만, 사용자들은 이를 외우는데 어려움을 느끼고 심지어는 포스트잇에 적어 컴퓨터에 붙여놓는다. 가장 이상적인 해결법은 '발음이 가능한' 패스워드를 만드는 것으로 적당히 외우기 쉬우면서도 안전하게 계정을 지킬 수 있

www.acmicpc.net

#include <iostream>
#include <string>
#include <vector>
using namespace std;


int main() {
	while (true) {
		string s;
		cin >> s;
		if (s == "end") break;
		bool flag = false;
		int countVowel = 0;
		vector<bool> isVowel(s.size());
		
		if (s[0] == 'a' || s[0] == 'e' || s[0] == 'i' || s[0] == 'o' || s[0] == 'u') {
			countVowel++;
			isVowel[0] = true;
		}
		for (int i = 1; i < s.size(); i++) {
			if (s[i] != 'e' && s[i] != 'o' && s[i - 1] == s[i]) {
				flag = true;
				break;
			}
			if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') {
				countVowel++;
				isVowel[i] = true;
			}
		}
		if (flag || countVowel == 0) {
			cout << '<' << s << "> is not acceptable.\n";
			continue;
		}
		for (int i = 2; i < s.size(); i++) {
			if (isVowel[i - 2] == isVowel[i - 1] && isVowel[i - 1] == isVowel[i]) {
				flag = true;
				break;
			}
		}
		if(flag) cout << '<' << s << "> is not acceptable.\n";
		else cout << '<' << s << "> is acceptable.\n";
	}
	return 0;
}
728x90

+ Recent posts