π [λ°±μ€μκ³ λ¦¬μ¦ νμ΄] Q.1759 μνΈ λ§λ€κΈ° λ¬Έμ νμ΄
π λ¬Έμ
https://www.acmicpc.net/problem/1759
λ°λ‘ μ΄μ μ΅λ°±μ€ μ‘°κ΅κ° λ°© μ΄μ λ₯Ό μ£Όλ¨Έλμ λ£μ μ± κΉλΉ‘νκ³ μμΈλ‘ κ° λ²λ¦¬λ ν©λΉν μν©μ μ§λ©΄ν μ‘°κ΅λ€μ,
702νΈμ μλ‘μ΄ λ³΄μ μμ€ν μ μ€μΉνκΈ°λ‘ νμλ€. μ΄ λ³΄μ μμ€ν μ μ΄μ κ° μλ μνΈλ‘ λμνκ² λμ΄ μλ μμ€ν μ΄λ€.
μνΈλ μλ‘ λ€λ₯Έ Lκ°μ μνλ²³ μλ¬Έμλ€λ‘ ꡬμ±λλ©° μ΅μ ν κ°μ λͺ¨μ(a, e, i, o, u)κ³Ό μ΅μ λ κ°μ μμμΌλ‘ ꡬμ±λμ΄ μλ€κ³
μλ €μ Έ μλ€. λν μ λ ¬λ λ¬Έμμ΄μ μ νΈνλ μ‘°κ΅λ€μ μ±ν₯μΌλ‘ λ―Έλ£¨μ΄ λ³΄μ μνΈλ₯Ό μ΄λ£¨λ μνλ²³μ΄ μνΈμμ μ¦κ°νλ μμλ‘
λ°°μ΄λμμ κ²μ΄λΌκ³ μΆμΈ‘λλ€. μ¦, abcλ κ°λ₯μ±μ΄ μλ μνΈμ΄μ§λ§ bacλ κ·Έλ μ§ μλ€.
μ 보μ μμ€ν μμ μ‘°κ΅λ€μ΄ μνΈλ‘ μ¬μ©νμ λ²ν λ¬Έμμ μ’ λ₯λ Cκ°μ§κ° μλ€κ³ νλ€. μ΄ μνλ²³μ μ μν λ―Όμ, μμ νμ λ
μ‘°κ΅λ€μ λ°©μ μΉ¨ν¬νκΈ° μν΄ μνΈλ₯Ό μΆμΈ‘ν΄ λ³΄λ €κ³ νλ€. Cκ°μ λ¬Έμλ€μ΄ λͺ¨λ μ£Όμ΄μ‘μ λ, κ°λ₯μ± μλ μνΈλ€μ
λͺ¨λ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
π μ κ·Όλ²
Q.1759 μνΈ λ§λ€κΈ° λ¬Έμ νμ΄μ λλ€.
μνΈλ₯Ό λ§λ€κΈ° μν΄ λͺ¨λ κ²½μ°λ₯Ό μμ νμμ ν΄μΌ ν©λλ€.
μ¬κΈ°μ λ¬Έμ λ₯Ό 보며 νμ ν΄μΌ ν μ€μν κ²μ
λ°λ‘ μνΈκ° μ¦κ°νλ μμλ‘ λ°°μ΄λμ΄μΌ νλ€λ κ²μ λλ€.
μ΄λ μ¦, λ°λμ μ¦κ°νλ μμλ‘ μ€λ¦μ°¨μμΌλ‘ λ°°μ΄μ΄ κ³ μ λλ€λ κ² μ λλ€.
μμλ 무쑰건 μ€λ¦μ°¨μμΌλ‘ κ³ μ μ΄ λμ΄μΌ νλ―λ‘
μ‘°ν©μ ν΅ν΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μ‘°ν©μ μ΄μ©ν΄ cκ°μ λ¬Έμ μ€ Lκ°μ μνλ²³μ κ³ λ₯΄λ κ²½μ°λ€μ μ°ΎμΌλ©΄ λ©λλ€.
μ΄λ κ² μ‘°ν©μ ν΅ν΄ λͺ¨λ κ²½μ°μ μνΈλ₯Ό λ§λ€κ³
λ¬Έμ μ μ£Όμ΄μ§ 쑰건μ λ§κ²
ν κ° μ΄μμ λͺ¨μκ³Ό λ κ° μ΄μμ μμμ΄ μλμ§λ₯Ό νμΈνμ¬
쑰건μ λ§λ μνΈλ§ μΆλ ₯ν΄μ£Όλ©΄ λ©λλ€.
π» μ½λ
package problem.brute;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main_1759 {
static int L, C;
static String[] alphabet;
static char[] vowels = {'a','e','i','o','u'};
public static void main(String[] args) throws IOException {
input();
Arrays.sort(alphabet);
solve();
}
public static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String [] input = br.readLine().split(" ");
L = Integer.parseInt(input[0]);
C = Integer.parseInt(input[1]);
alphabet = br.readLine().split(" ");
}
public static void solve() {
boolean[] visited = new boolean[C];
combination(alphabet, visited, 0, C,L);
}
static void combination(String[] arr, boolean[] visited, int depth, int n, int r) {
if (r == 0) {
checkWord(arr, visited, n);
return;
}
if (depth == n) {
return;
}
visited[depth] = true;
combination(arr, visited, depth + 1, n, r - 1);
visited[depth] = false;
combination(arr, visited, depth + 1, n, r);
}
static void checkWord(String[] arr, boolean[] visited,int n){
int vowelCount = 0;
int consonantCount = 0;
StringBuilder sb = new StringBuilder();
for(int i=0; i<n; i++){
if(visited[i]){
sb.append(arr[i]);
char currentChar = arr[i].charAt(0);
if( isVowel(currentChar) ){
vowelCount++;
}else{
consonantCount++;
}
}
}
if(vowelCount >= 1 && consonantCount >= 2){
System.out.println(sb.toString());
}
}
static boolean isVowel(char c){
for(int i=0; i<vowels.length; i++){
if(vowels[i] == c){
return true;
}
}
return false;
}
}