본문 바로가기
백준 문제풀이

[백준][문자열] 4659 비밀번호 발음하기 c++구현

by 꽁이꽁설꽁돌 2024. 4. 13.
728x90
반응형

목차

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

     

    4659번: 비밀번호 발음하기

    좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp

    www.acmicpc.net

    문제

     

    코드 구현

    #include <iostream>
    #include<map>
    #include<algorithm>
    
    using namespace std;
    
    map<char, int> m;  //모음 넣을 map
    bool check(string str) {
    	int cnt = 0;  //모음 존재여부
    	int pass1 = 0; //모음 세어줌
    	int pass2 = 0;  //자음 세어줌
    	
    	
    	for (int i = 0; i < str.size(); i++) {
    		if (m[str[i]])
    			cnt++;  //모음 존재여부
    		if (m[str[i]]) {
    			pass2 = 0;
    			pass1++;
    		}
    		else {
    			pass1 = 0;
    			pass2++;
    		}
    		if (pass1 >= 3 || pass2 >= 3) {
    			return false;  //연속 3개이상일 경우 x
    		}
    		if (i >= 1) {
    			char ex = str[i - 1];   //그 전 문자열 비교 
    			if (ex != 'e' && ex != 'o') {
    				if (ex == str[i])
    					return false;
    			}
    		}
    	}
    	if (cnt == 0)  //모음 없을 경우x
    		return false;
    	else
    		return true;
    }
    
    int main()
    {
    	
    	string str;
    	m.insert({ 'a', 1 });
    	m.insert({ 'e', 1 });
    	m.insert({ 'i', 1 });
    	m.insert({ 'o', 1 });
    	m.insert({ 'u', 1 });
    	while (true) {
    		cin >> str;
    		if (str.compare("end") ==0)
    			break;
    		if (check(str))
    			cout << "<" << str << ">" << " is acceptable.\n";
    		else
    			cout << "<" << str << ">" << " is not acceptable.\n";
    	}
    
    	
    }
    반응형