❓ 완전 탐색이란? 완전 탐색은 가능한 모든 해결 방법을 체계적으로 탐색하여 문제를 해결하기 위한 일반적인 접근 방식 또는 기술이라고 말할 수 있습니다. 완전 탐색이라는 특정 알고리즘이 따로 존재하는 것은 아니고, 이 접근 방식을 가지는 여러 종류의 알고리즘들의 큰 분류라고 할 수 있습니다. 👾 종류 브루트 포스 ( Brute Force ) 최적의 해결 방법을 찾기 위해서 가능한 모든 해결 방법을 확인하는 단순하고 직접적인 방식입니다. 단순히 조건문과 반복문을 이용할 수 있고, 좀 더 체계적으로는 순열과 조합의 접근 방식도 있습니다. 재귀 ( Recursion ) 재귀는 특정 조건이 충족될 때까지 함수가 반복적으로 자신을 호출하는 프로그래밍 기술입니다. 재귀 함수에서 함수는 일단 충족되면 재귀 호출을 중..
📌 조합 서로 다른 n개의 원소를 가지는 어떤 집합에서 순서에 상관없이 r개의 원소를 선택하는 것입니다. 기호로 나타내면 nCr 입니다. 예를 들어, 4C3를 직접 구해서 써본다면 아래와 같이 나옵니다. Input: [1,2,3,4] Output: [[1,2,3],[1,2,4],[1,3,4],[2,3,4]] 예시에서 볼 수 있듯이, 조합은 순서를 상관하지 않습니다. ( [1,2,3] = [3,1,2] ) 내부의 숫자가 같다면 그냥 같은 것으로 칩니다. 💦 풀이 과정 배열에서 순서대로 하나씩 선택하고, 나머지 원소들로 조합을 합니다. 나머지 원소들로 조합을 할때는 재귀를 사용하면 편합니다. 예시) [1,2,3,4] 선택 [1], 나머지 [2,3,4]에서 2개를 조합히면 [1,2,3],[1,2,4],[1,3..
🥯 DFS 란? DFS는 Depth First Search의 약자로, 깊이 우선 탐색이라는 뜻을 가진 그래프 탐색 기법입니다. DFS는 시작 노드부터 탐색을 시작하면 가던 방향으로 탐색할 노드가 없을 때까지 쭉 탐색합니다. 탐색할 노드가 없다면 나눠져 있던 갈래까지 다시 올라와서 다음 분기를 똑같이 탐색합니다. 예를 들어, 미로의 탈출구를 찾는다고 했을 때, 한 길로 이동하다가 양 갈래 길을 만났습니다. 그 때, 일단 오른쪽 길로 쭉 이동합니다. 그런데 그 길은 막혀있는 길 이었습니다. 그래서 다시 아까 그 양 갈래 길로 이동해서 왼쪽 길로 이동합니다. DFS는 이런 느낌이라고 할 수 있습니다. 특징 노드를 방문하고 방문 체크를 해주어야 합니다. 하지 않으면 무한 루프에 빠질 수 있습니다. 단순 탐색 시..