Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 1759] 암호 만들기 본문
반응형
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