백준 1759번: 암호 만들기
문제
문제 바로가기> 백준 1759번: 암호 만들기
풀이
우선 정렬 후, 암호를 이루는 수만큼 하나씩 넣어보면서 조건을 만족하는지 테스트하는 브루트포스 방식으로 문제를 풀었다!
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int L, C;
vector<char> character;
vector<char> password;
bool promising(){ // 유망한진 판단
int aeiou = 0;
for(int i=0; i<L; i++){ // 모음의 개수 체크
if(password[i]=='a' || password[i]=='e' || password[i] =='i' || password[i] == 'o' || password[i] == 'u') aeiou++;
}
if(aeiou>=1 && L-aeiou>=2) return true; // 자음 = L - 모음
return false;
}
void make(int idx){
if(password.size()==L){ // 길이를 만족한 경우
if(promising()){ // 조건을 만족하는지 체크
for(int i=0; i<L; i++) cout << password[i]; // 길이+조건이 만족하는 경우 password 출력
cout << '\n';
}
}
for(int i=idx; i<C; i++){
password.push_back(character[i]); // 현재 글자 정하기
make(i+1); // 다음 글자 정하기
password.pop_back(); // 빼주고 다른 글자 넣어보기!
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
char tmp; cin >> L >> C; // 암호를 이루는 서로 다른 알파벳 수 , 암호에 사용했을 법한 문자들
for(int i=0; i<C; i++) {
cin >> tmp;
character.push_back(tmp);
}
sort(character.begin(), character.end()); // 사전 순 정렬
make(0); // 암호 만들기
}
Author And Source
이 문제에 관하여(백준 1759번: 암호 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@danbibibi/백준-1759번-암호-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)