[伯俊1759]パスワードの作成-Java
パスワードの各ケースの数字を出力できます.
しかし、制限条件は
覚えさえすればいい.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int L,C;
static String sum;
static boolean[] pos;
static String[] arr;
static StringBuilder sb = new StringBuilder();
public static void dfs2(int idx, int start, String result) {
if (idx == L) {
int consonant = 0;
int vowel = 0;
for(int i = 0; i < result.length(); i++) {
if(result.charAt(i) == 'a'
|| result.charAt(i) == 'e'
|| result.charAt(i) == 'i'
|| result.charAt(i) == 'o'
|| result.charAt(i) == 'u'
) {
consonant++;
} else {
vowel++;
}
}
// 모음 하나이상, 자음 두개이상 일 때, 출력
if(consonant >= 1 && vowel >= 2) {
sb.append(result + "\n");
}
return;
}
for(int i = start ; i < C ; i++) {
if(!pos[i]) {
pos[i] = true;
dfs2(idx + 1, i + 1, sum = result + arr[i]);
pos[i] = false;
}
}
}
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());
pos = new boolean[C];
arr = br.readLine().split(" ");
// 오름차순 정렬
Arrays.sort(arr);
// 탐색시작
dfs2(0,0,"");
System.out.print(sb);
}
}
Reference
この問題について([伯俊1759]パスワードの作成-Java), 我々は、より多くの情報をここで見つけました https://velog.io/@hyeokjinon/백준-1759-암호만들기-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol