https://www.acmicpc.net/problem/1759
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main{
static char[] arr, password;
static int L, C;
public static void dfs(int cnt, int start){
if(cnt==L){ // 암호의 길이가 L이면
int c=0, v=0;
for(char x : password){
if(x=='a' || x=='e' || x=='i' || x=='o' || x=='u') v++; // 모음이면
else c++;
}
if (v >= 1 && c >= 2) {
for(char x :password){
System.out.print(x);
}
System.out.println();
}
return;
}
for(int i=start; i<C; i++){
password[cnt] = arr[i];
dfs(cnt+1, i+1); // 암호를 이루는 알파벳이 증가하는 순서로 배열되야 하므로 -> 방문처리도 안해줘도 된다.
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
L = Integer.parseInt(st.nextToken()); // 암호는 L개의 알파벳 소문자들로 구성
C = Integer.parseInt(st.nextToken()); // C개의 문자들
arr = new char[C];
password = new char[L];
st = new StringTokenizer(br.readLine());
for(int i=0; i<C; i++){
arr[i] = st.nextToken().charAt(0);
}
Arrays.sort(arr); // 알파벳이 증가하는 순서대로 정렬
dfs(0, 0);
}
}
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 11723번- 집합(비트 마스크) (0) | 2022.12.15 |
---|---|
[JAVA] 백준 2529번- 부등호 (0) | 2022.12.14 |
[JAVA] 백준 14889번- 스타트와 링크 (0) | 2022.12.12 |
[JAVA] 백준 14501번- 퇴사 (0) | 2022.12.12 |
[JAVA] 백준 2668번- 숫자고르기 (0) | 2022.12.01 |