완전탐색이란?
문제를 해결하기 위해 모든 선택지를 조사하여 정답을 찾는 방법
단순 Brute Force
단순하게 반복, 조건문으로 모든 경우를 탐색하여 정답 도출
비트마스크 (Bitmask)
나올 수 있는 모든 경우의 수가 각각 원소가 포함되거나 포함되지 않느느 두 가지 선택으로 구성되는 경우 사용
ex. 원소가 n개인 집합의 모든 부분집합을 구하는 문제
각 원소가 포함되는지, 포함되지 않는지 0, 1로 구분하여 배열에 저장 가능
재귀함수
비트마스크와 마찬가지로 각 원소가 두 가지 선택지를 가질 때 유용하게 사용
포함이 된다면 해당 원소를 넣어 함수 호출, 아니라면 그 상태에서의 함수 호출
ex. 피보나치 수열 등
순열
서로 다른 N개를 일렬로 나열하는 방법 (경우의 수)
N!로 완전 탐색을 이용하기 위해서 N이 한자리 수는 되어야 함
순열에 원소를 하나씩 채워가는 방식
재귀함수 이용
BFS, DFS
너비 우선 탐색과 깊이 우선 탐색
순차적으로 노드를 방문하여 모든 노드를 탐색
과정
1. 해결하고자 하는 문제의 가능한 경우의 수 계산
2. 가능한 모든 방법 고려
3. 실제 답을 구할 수 있는지 적용
!! 완전 탐색의 경우, 사용할 수 있는 알고리즘과 그에 따른 예시가 너무 다양하기 때문에 별도로 정리 !!
'코딩테스트 > 알고리즘' 카테고리의 다른 글
그리디 알고리즘(Greedy Algorithm) (0) | 2023.01.05 |
---|