Dev.baelanche

[백준 1759] 암호 만들기 본문

Data Structure & Algorithm/PS - JAVA

[백준 1759] 암호 만들기

baelanche 2019. 6. 11. 21:52
반응형

 

DFS로 완전탐색하여 조건에 맞는 암호를 모두 찾아내면 된다.

 

1. 사전식으로 출력해야 하므로 입력받은 배열은 오름차순으로 정렬한다.

2. 재귀 + 반복문으로 진행하며 현재의 문자보다 큰 문자가 나오면 문자를 카운트했을때와 안했을때로 분기한다.

3. 문자를 카운트 할때마다 자음인지 모음인지 체크한다.

4. l 과 문자의 길이가 같고 자음, 모음의 조건을 만족하면 출력한다.

 

 

public class Main {
    
    static int l;
    static int c;
    static char a[];
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        l = sc.nextInt();
        c = sc.nextInt();
        a = new char[c];
        sc.nextLine();
        a = sc.nextLine().replaceAll(" ", "").toCharArray();
        
        Arrays.sort(a);
        dfs(0, (char)0, "", 0, 0);
    }
    
    public static void dfs(int cnt, char ch, String dic, int con, int vow) {
        if(cnt == l && con >= 2 && vow >= 1) {
            System.out.println(dic);
            return;
        }
        
        //입력받은 문자보다 루프문의 문자가 크면 무조건 대입해봄
        for(int i=0; i<c; i++)
            if(a[i] > ch) {
                if(a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u')
                    dfs(cnt + 1, a[i], dic + a[i], con, vow + 1);
                else
                    dfs(cnt + 1, a[i], dic + a[i], con + 1, vow);
            }
    }
}

 

반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 9663] N-Queen  (0) 2019.06.12
[백준 1987] 알파벳  (0) 2019.06.12
[백준 14888] 연산자 끼워넣기  (0) 2019.06.11
[백준 14503] 로봇 청소기  (0) 2019.06.11
[백준 14501] 퇴사  (0) 2019.06.11
Comments