알고리즘 & 자료구조/완전탐색 2

[백준]1759번 - 암호 만들기 (JAVA)

| 문제 이 문제는 C개의 알파벳을 탐색하여 중복 없이 L개를 고르는 문제이다. 그러므로 백트래킹을 사용해야 한다는 의미이며 그 방법들 중 DFS를 사용할 것이다. ( * 백트래킹과 DFS 에 대한 자세한 설명은 이전 게시글에 설명해놓았다.) https://turtle8760.tistory.com/90 | 문제 접근 방식 1. L과 C를 입력받는다 (L: 암호의 자릿수 C: 암호로 사용했을 가능성이 있는 알파벳의 개수) : 최소 1개의 모음, 최소 두개의 자음이 포함된다. --> 모음자음 판별하는 메서드 생성 2. 알파벳이 사전 순으로 나열된다.(bac X abc O) --> Arrays.sort 사용한다. 3. 암호의 각 알파벳을 중복하지 않고 모든 경우의 수를 탐색한다. ( aaci (X) aciw(..

[백준]15650번 - N과 M(2) (JAVA)

| 문제 이 문제는 1~ N까지의 수를 탐색하여 M개를 고르는 문제이다. 그러므로 우리는 정해진 숫자범위에서 탐색을 해야한다는 의미와 같다. 또한 이 말은 즉 백트래킹을 사용해야한다는 뜻이다. | 백트래킹(Backtracking) 이란? 말 그대로 되추적한다 라는 의미이다. 좀 더 알고리즘적으로 설명하자면, 어떤 노드의 '유망성'을 판단한 뒤, 해당 노드가 유망하지 않다면 부모 노드로 돌아가 다른 자식 노드를 찾는 방법이다. 즉, 모든 경우의 수를 찾아보지만, 그 중에서도 가능성만 있는 경우의 수를 찾아보는 방법이다. 백트래킹의 방법은 여러가지가 있지만 이번 문제에는 DFS 라는 알고리즘을 사용하게 될 것이다. | DFS 란? Depth-First-Search 의 약자이며 깊이를 우선 탐색한다는 의미이다..