티스토리 뷰
// 알고리즘
1. 조합
2. 받은 문자열을 정렬
3. 조합
4. 완성된 문자열중 주어진 조건과 일치한다면 StringBuilder에 저장
5. 출력.
더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class 암호만들기_1759 {
static int L, C;
static char arr[], ans[];
static StringBuilder sb;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
sb = new StringBuilder();
L = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
arr = new char[C];
ans = new char[L];
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < C; i++) {
arr[i] = st.nextToken().charAt(0);
}
// 알고리즘
Arrays.sort(arr);
cal(0, 0);
System.out.println(sb.substring(0, sb.length() - 1));
}
private static void cal(int idx, int start) {
if (idx == L) {
check();
return;
}
for (int i = start; i < C; i++) {
ans[idx] = arr[i];
cal(idx + 1, i + 1);
}
}
private static void check() {
int c = 0, v = 0;
String str = "";
for (int i = 0; i < L; i++) {
if (ans[i] == 'a' || ans[i] == 'e' || ans[i] == 'i' || ans[i] == 'o' || ans[i] == 'u') {
c++;
} else {
v++;
}
str += ans[i];
}
if (c < 1 || v < 2)
return;
sb.append(str + "\n");
}
}
'Algorithm' 카테고리의 다른 글
백준_스택 수열_1874 (0) | 2021.03.07 |
---|---|
백준_스타트 링크_5014 (0) | 2021.03.06 |
백준_컨베이어벨트_20055 (0) | 2021.02.27 |
백준_줄 세우기_2252 (0) | 2021.02.23 |
백준_가운데를 말해요_1655 (0) | 2021.02.14 |