본문 바로가기
개발자/알고리즘

[BOJ] 1759번 암호 만들기

by D , 2019. 9. 17.
반응형


#include < iostream >
#include < vector >
#include < algorithm >

using namespace std;

//a:97
//자음 최소 2개
//모음 최소 1개
//a-97,e-101,i-105,o-111,u-117
//오름차순
int main()
{
    int n,r;
    cin>>n>>r;

    vector q;
    vector in;

    //문자를 입력받아 오름차순 정렬
    for(int i=0;i<r;i++){
        char temp;
        cin>>temp;
        q.push_back(temp);
        if(i<n){
            in.push_back(1);
        }else{
            in.push_back(0);
        }
    }
    sort(q.begin(),q.end());

    do{
        vector a;

        for(int i=0;i<in.size();i++){
            if(in[i] == 1){
                a.push_back(q[i]);
            }
        }

        //모음 자음 개수 검사
        int mNum=0,jNum=0;

        for(int j=0;j<a.size();j++){
            if(a[j] == 'a' || a[j] == 'e' || a[j] == 'i' || a[j] == 'o' || a[j] == 'u')
                mNum++;
            else
                jNum++;
        }

        if(mNum >=1 && jNum >= 2){
            for(int i=0;i<a.size();i++){
                cout<<a[i];
            }
            cout<<endl;
        }else{
            continue;
        }

        a.clear();
    }while(prev_permutation(in.begin(),in.end()));

    return 0;
}

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

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

 

반응형

'개발자 > 알고리즘' 카테고리의 다른 글

[BOJ] 14501번 퇴사  (0) 2019.09.18
[BOJ] 1182번 부분수열의 합  (0) 2019.09.17
[BOJ] 14888번 연산자 끼워넣기  (0) 2019.09.17
[BOJ] 6603번 로또  (0) 2019.09.12
[BOJ] 10819번 차이를 최대로  (0) 2019.08.26