제민
1759 암호 만들기 본문
https://www.acmicpc.net/problem/1759
1759번: 암호 만들기
첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.
www.acmicpc.net
아무리 골 5라고 해도 여기 있을 난이도가 아니다. n과 m과 다를 게 없는 문제였다.
자음 모음은 반대로 썼을 수도 있다. (반대로 쓴 것 같음)
#include <bits/stdc++.h>
using namespace std;
int L,C; //3~15
char arr[20];
char ans[20];
bool isused[20];
void func(int k){
if(k==L){
int vowel=0;
int Consonant=0;
for(int i=0;i<k;i++){
if(arr[ans[i]]=='a' || arr[ans[i]]=='e' || arr[ans[i]]=='i' || arr[ans[i]]=='o' || arr[ans[i]]=='u') Consonant++;
else vowel++;
}
if(vowel<2 || Consonant<1) return;
for(int i=0;i<k;i++) cout<<arr[ans[i]];
cout<<'\n'; return;
}
int st=0;
if(k>0) st=ans[k-1];
for(int i=st;i<C;i++){
if(isused[i]) continue;
isused[i]=true;
ans[k]=i;
func(k+1);
isused[i]=false;
}
return;
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
cin>>L>>C;
for(int i=0;i<C;i++) cin>>arr[i];
sort(arr,arr+C);
func(0);
return 0;
}
'코테연습일지 > 완전탐색 & 백트래킹' 카테고리의 다른 글
BOJ 3116 생물학자 (0) | 2024.10.24 |
---|---|
16987 계란으로 계란치기 (1) | 2024.03.14 |
15684 사다리 조작 (1) | 2024.03.05 |
백트래킹(2) - 부분수열의 합, 등 (0) | 2024.01.23 |
백트래킹(1) - N과 M (0) | 2024.01.21 |