Solution
조합 - C개 중 L개를 뽑아 자음 2개 이상, 모음 1개 이상이면 출력한다.
증가하는 순서로 배열되어 있으므로 sort 필요하다.
// 1759, 암호 만들기
package BOJ;
import java.io.*;
import java.util.*;
public class BOJ_1759 {
static int L, C;
static String[] alphas;
static int[] combs;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
L = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
alphas = br.readLine().split(" ");
// 입력 끝
// 증가하는 순서로 정렬
Arrays.sort(alphas);
combs = new int[L];
comb(0, 0);
System.out.println(sb);
}
static void comb(int cnt, int start) {
if (cnt == L) {
if (isPW(combs)) {
for (int i = 0; i < combs.length; i++) {
sb.append(alphas[combs[i]]);
}
sb.append("\n");
}
return;
}
for (int i = start; i < C; i++) {
combs[cnt] = i;
comb(cnt + 1, i + 1);
}
}
static boolean isPW(int[] comb) {
int v = 0, c = 0;
for (int i = 0; i < comb.length; i++) {
if (alphas[comb[i]].equals("a") || alphas[comb[i]].equals("e") || alphas[comb[i]].equals("i")
|| alphas[comb[i]].equals("o") || alphas[comb[i]].equals("u")) {
v++;
} else {
c++;
}
if (v > 1 && c > 2)
return true;
}
if (v < 1 || c < 2)
return false;
return true;
}
}
문제 www.acmicpc.net/problem/1759
'알고리즘 > 브루트포스' 카테고리의 다른 글
자바 | 백준 | 1034 | 램프 (0) | 2021.05.12 |
---|---|
파이썬 | 백준 | 7569 | 토마토 | bfs 3차원 시간초과 (0) | 2020.09.05 |
파이썬 | 백준 | 15686 | 치킨 배달 | 조합(combinations) (0) | 2020.08.21 |
파이썬 | 백준 | 2503 | 숫자 야구 | 순열(permutations) (0) | 2020.08.19 |
파이썬 | 백준 | 2309 | 일곱 난쟁이 | 조합(combinations) (0) | 2020.08.17 |