완전 탐색(Brute Force)은 가능한 모든 경우의 수를 다 해보는 방법입니다.
즉, 문제를 해결하기 위해 모든 가능한 조합을 하나하나 다 시도해보는 것입니다.
완전 탐색은 단순하지만, 확실하게 정답을 찾을 수 있는 방법입니다.
예시: 숫자 맞추기 게임
예를 들어, 1부터 10까지의 숫자 중에서 하나를 맞추는 게임이 있다고 가정해봅시다.
완전 탐색을 사용하면, 1부터 10까지의 모든 숫자를 하나씩 다 시도해보는 것입니다. 이렇게 하면 반드시 정답을 찾을 수 있습니다.
# 1부터 10까지의 모든 숫자를 다 시도해보기
secret_number = 7 # 맞춰야 할 숫자
for guess in range(1, 11):
if guess == secret_number:
print(f"정답은 {guess}입니다!")
break
이 코드에서는 1부터 10까지의 모든 숫자를 하나씩 시도해보면서, 맞는 숫자를 찾으면 그 숫자를 출력하고 멈춥니다.
완전 탐색의 특징
다양한 예제들을 살펴볼까요?
파이썬에서의 완전 탐색 예제
# 1부터 10까지의 숫자 중에서 두 숫자의 합이 10이 되는 모든 쌍 찾기
numbers = list(range(1, 11))
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
if numbers[i] + numbers[j] == 10:
print(f"합이 10이 되는 숫자 쌍: ({numbers[i]}, {numbers[j]})")
이 코드는 두 개의 반복문을 사용하여 모든 가능한 숫자 쌍을 확인합니다. 합이 10이 되는 쌍을 찾으면 출력합니다.
요약
장점:
단점:
이제 완전 탐색이 무엇인지 이해할 수 있겠죠?
완전 탐색은 기본적이지만 비효율적일 수 있기 때문에, 다양한 알고리즘 기법을 학습하고 활용한다면, 전부 탐색하지 않고도 원하는 값을 찾을 수 있게 됩니다.