[백준] 1759 암호만들기

장철현·2023년 10월 18일
0

백준

목록 보기
4/80

링크

1759 암호만들기

문제

예시

전체 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;


public class Algorithm {
    public static List<String> list = new ArrayList<>();
    public static boolean[] visited = null;
    public static String[] arr = null;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] arr1 = br.readLine().split(" ");
        int n = Integer.parseInt(arr1[0]);
        int m = Integer.parseInt(arr1[1]);

        arr = br.readLine().split(" ");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        visited = new boolean[arr.length];

        dfs(0, n);
    }
    public static void dfs(int start, int n){
        if(list.size() == n){
            int mo = 0;
            int ja = 0;
            StringBuffer sb = new StringBuffer();
            //최소 한개 몽므 && 최소 두개 자음
            for(int i=0;i<list.size();i++){
                String element = list.get(i);
                sb.append(element);

                if(element.equals("a") || element.equals("e") || element.equals("i") || element.equals("o") || element.equals("u")){
                    mo++;
                } else{
                    ja++;
                }
            }

            if(mo >= 1 && ja >= 2){
                System.out.println(sb.toString());
            }

            return;
        }

        for(int i=0;i<visited.length;i++){
            if(!visited[i] && i >= start){
                //System.out.println("exe");
                visited[i] = true;
                list.add(arr[i]);
                dfs(i, n);
                list.remove(list.size() - 1);
                visited[i] = false;

            }
        }
    }

}

골드 5치고 쉬웠다.

처음에 틀려서 왜 틀렸지 하고 봤는데 자음갯수랑 모음갯수를 생각 안하고 풀어서 그랬다.

0개의 댓글