완전 탐색(Full Search 또는 Brute Force)은 주어진 문제의 모든 가능한 해를 하나씩 탐색하여 정답을 찾는 방법입니다. 가능한 모든 경우의 수를 탐색하여 해를 찾는 것이므로, 정확한 답을 구할 수 있지만 시간 복잡도가 크거나 계산이 많이 필요한 경우에는 비효율적일 수 있습니다. 완전 탐색은 문제의 크기가 작거나, 최적해를 찾는 경우에 유용하게 사용됩니다.
완전 탐색의 주요 특징:
파이썬 코드를 통해 완전 탐색을 예시로 살펴보겠습니다. 다음은 1부터 N까지의 자연수 중에서 3개를 선택하는 모든 조합을 출력하는 완전 탐색 코드입니다.
from itertools import combinations
def complete_search(n, k):
numbers = list(range(1, n+1))
comb = list(combinations(numbers, k))
return comb
N = 5 # 1부터 N까지의 자연수 중
K = 3 # 3개를 선택하는 모든 조합을 구함
combinations = complete_search(N, K)
print("조합 개수:", len(combinations))
for comb in combinations:
print(comb)
이 코드는 itertools 라이브러리의 combinations 함수를 사용하여 1부터 N까지의 자연수 중에서 K개를 선택하는 모든 조합을 구하고 출력합니다. 이렇게 완전 탐색을 통해 가능한 모든 경우의 수를 확인할 수 있습니다.