- toc {:toc}
λ¬Έμ
λ°λ‘ μ΄μ μ΅λ°±μ€ μ‘°κ΅κ° λ°© μ΄μ λ₯Ό μ£Όλ¨Έλμ λ£μ μ± κΉλΉ‘νκ³ μμΈλ‘ κ° λ²λ¦¬λ ν©λΉν μν©μ μ§λ©΄ν μ‘°κ΅λ€μ, 702νΈμ μλ‘μ΄ λ³΄μ μμ€ν μ μ€μΉνκΈ°λ‘ νμλ€. μ΄ λ³΄μ μμ€ν μ μ΄μ κ° μλ μνΈλ‘ λμνκ² λμ΄ μλ μμ€ν μ΄λ€.
μνΈλ μλ‘ λ€λ₯Έ Lκ°μ μνλ²³ μλ¬Έμλ€λ‘ ꡬμ±λλ©° μ΅μ ν κ°μ λͺ¨μ(a, e, i, o, u)κ³Ό μ΅μ λ κ°μ μμμΌλ‘ ꡬμ±λμ΄ μλ€κ³ μλ €μ Έ μλ€. λν μ λ ¬λ λ¬Έμμ΄μ μ νΈνλ μ‘°κ΅λ€μ μ±ν₯μΌλ‘ λ―Έλ£¨μ΄ λ³΄μ μνΈλ₯Ό μ΄λ£¨λ μνλ²³μ΄ μνΈμμ μ¦κ°νλ μμλ‘ λ°°μ΄λμμ κ²μ΄λΌκ³ μΆμΈ‘λλ€. μ¦, abcλ κ°λ₯μ±μ΄ μλ μνΈμ΄μ§λ§ bacλ κ·Έλ μ§ μλ€.
μ 보μ μμ€ν μμ μ‘°κ΅λ€μ΄ μνΈλ‘ μ¬μ©νμ λ²ν λ¬Έμμ μ’ λ₯λ Cκ°μ§κ° μλ€κ³ νλ€. μ΄ μνλ²³μ μ μν λ―Όμ, μμ νμ λ μ‘°κ΅λ€μ λ°©μ μΉ¨ν¬νκΈ° μν΄ μνΈλ₯Ό μΆμΈ‘ν΄ λ³΄λ €κ³ νλ€. Cκ°μ λ¬Έμλ€μ΄ λͺ¨λ μ£Όμ΄μ‘μ λ, κ°λ₯μ± μλ μνΈλ€μ λͺ¨λ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ λ μ μ L, Cκ° μ£Όμ΄μ§λ€. (3 β€ L β€ CΒ β€ 15) λ€μ μ€μλ Cκ°μ λ¬Έμλ€μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ λ¬Έμλ€μ μνλ²³ μλ¬Έμμ΄λ©°, μ€λ³΅λλ κ²μ μλ€.
μΆλ ₯
κ° μ€μ νλμ©, μ¬μ μμΌλ‘ κ°λ₯μ± μλ μνΈλ₯Ό λͺ¨λ μΆλ ₯νλ€.
μΆμ²: https://www.acmicpc.net/problem/1759
νμ΄
쑰건
- μΆλ ₯μ μ¬μ μμΌλ‘ β sort μ λ ¬ μ¬μ©
- μ΅μ 1κ° λͺ¨μ, 2κ°μ μμ νμ β vowelμ ν΅ν΄ ν΄κ²°
#include <bits/stdc++.h>
using namespace std;
int l, c;
char val[20];
char ch[20];
int is_used[20];
int vowel = 0;
void func(int k){
if(k==l){
if(vowel==0 || l-vowel<2){ // μ΅μ λͺ¨μ μμ 쑰건
return;
}
for(int i=0; i<l; i++){
cout << ch[i];
}
cout << '\n';
return;
}
for(int i=0; i<c; i++){
if(is_used[i]) continue;
if(k!=0 && (int)ch[k-1] > (int)val[i]) continue;
if(val[i]=='a'||val[i]=='e'||val[i]=='i'||val[i]=='o'||val[i]=='u') vowel++;
is_used[i] = 1;
ch[k] = val[i];
func(k+1);
is_used[i] = 0;
if(val[i]=='a'||val[i]=='e'||val[i]=='i'||val[i]=='o'||val[i]=='u') vowel--;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> l >> c;
for(int i=0; i<c; i++){
cin >> val[i];
}
sort(val, val+c);
func(0);
return 0;
}