백준 문제풀이/String

[C++] 백준 문제풀이 (String) 4659번 비밀번호 발음하기

코딩준우 2023. 6. 28. 17:08

 

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

 

4659번: 비밀번호 발음하기

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

www.acmicpc.net

 

//[C++] 백준 문제풀이 (String)

#include <bits/stdc++.h>



bool test(std::string & s){
    bool flag1 = false;
    int moCnt = 0;
    int jaCnt = 0;
    
    for (int i = 0; i < s.length() - 1; ++i){
        if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u'){
            flag1 = true;
            ++moCnt;
            jaCnt = 0;
            if (moCnt >= 3) return false;
        }
        else {
            ++jaCnt;
            moCnt = 0;
            if (jaCnt >= 3) return false;
        }
        if (s[i] == s[i + 1]){
            if (s[i] != 'e' && s[i] != 'o') return false;
        }
    }

    if (s.back() == 'a' || s.back()  == 'e' || s.back()  == 'i' || s.back()  == 'o' || s.back() == 'u'){
        flag1 = true;
        ++moCnt;
        jaCnt = 0;
        if (moCnt >= 3) return false;
    }
    else {            
        ++jaCnt;
        moCnt = 0;
        if (jaCnt >= 3) return false;
    }
    if (s[s.length() - 1] == s[s.length() - 2]){
        if (s[s.length() - 1] != 'e' && s[s.length() - 1] != 'o') return false;
    }

    if (flag1) return true;
    return false;
}


int main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    std::string s;
    while(true){
        std::cin >> s;
        if (s == "end") break;
        if (test(s)){
            std::cout << "<" << s << "> is acceptable.\n";
        }
        else {
            std::cout << "<" << s << "> is not acceptable.\n";
        }
    }
    return 0;
}