Competition/Baekjoon

[백준] 1759번 자바 암호만들기

bisi 2020. 4. 21. 10:31
문제 출처 

https://www.acmicpc.net/problem/1759

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- DFS 알고리즘을 통해서 해결

- C개의 문자중 L개의 문자열을 만들수 있는 케이스를 돌며 조건에 맞으면 출력

   - 조건 1. 문자열은 L개

   - 조건 2. 최소 모음 1개, 자음 2개 이상

 

- 참고 블로그

 

소스 코드 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
public class Main {
    private static String[] arr;
    private static int l, c;
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] tmp = br.readLine().split(" ");
        l = Integer.parseInt(tmp[0]);
        c = Integer.parseInt(tmp[1]);
 
        arr = br.readLine().split(" ");
        Arrays.sort(arr);
 
        solve(0,"");
    }
    private static void solve(int idx, String str){
        if(str.length() == l){// 길이가 l개 이고
            if(isPossible(str)){ // 모음하나이상, 자음 2개이상 맞으면
                System.out.println(str); // 출력
            }
            return;
        }
        if(idx >= c ){// idx 값이 맨끝에 왔으면 종료
            return;
        }
        // 자기 자신을 포함한것, 자기자신을 포함하지 않은것 가지치기!시작
        solve(idx+ 1, str + arr[idx]);// 자기자신과 다음 문자까지 같이
        solve(idx+ 1, str );// 자기자신만
    }
 
    private static boolean isPossible(String str){
        int vowel = 0, consonant = 0;
        for (int i = 0; i < str.length(); i++) {
            if(isVowel(str.charAt(i))){
                vowel++;
            }else {
                consonant++;
            }
        }
        return vowel>=1 && consonant >=2;
    }
 
 
    private static boolean isVowel( char ch ){
        return ch == 'a' | ch=='e' | ch=='i' | ch=='o' | ch=='u';
    }
 
}
 
 

 

 

결과 

 

'Competition > Baekjoon' 카테고리의 다른 글

[백준] 1963번 자바 소수 경로  (0) 2020.04.21
[백준] 1806번 부분합  (0) 2020.04.20
[백준] 1697번 자바 숨박꼭질  (0) 2020.04.19