[伯俊1759]パスワードの作成-Java



パスワードの各ケースの数字を出力できます.
しかし、制限条件は
  • は、少なくとも1つの母音(a,e,i,o,u)と2つの補助音から構成される.
  • の並べ替えの文字が好きで、順番に並べます.
    覚えさえすればいい.
  • 次のコードが実装されています.
    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);
    	        
    	}
    
    }