브루트포스(Brute Force) 알고리즘은 가능한 모든 경우의 수를 전부 탐색하여 문제의 해를 찾는 방법을 의미해요. 직관적이고 구현이 비교적 간단하지만, 경우의 수가 많아지면 계산 시간이 급격하게 늘어날 수 있다는 단점이 있습니다. 주요 특징과 장단점은 다음과 같습니다:
예를 들어, 특정 문자열에서 부분 문자열을 찾는 문제를 브루트포스 방식으로 해결하려면, 모든 가능한 시작 위치에서 부분 문자열을 비교하여 해당 문자열이 일치하는지를 확인합니다.
아래는 숫자로 구성된 리스트에서 두 수의 합이 특정 값과 일치하는 쌍을 찾는 간단한 브루트포스 코드입니다:
def find_pairs(arr, target):
n = len(arr)
for i in range(n):
for j in range(i + 1, n):
if arr[i] + arr[j] == target:
print(f"Pair found: ({arr[i]}, {arr[j]})")
arr = [1, 2, 3, 4, 5]
target = 6
find_pairs(arr, target)
Pair found: (1, 5)
Pair found: (2, 4)
이 코드에서는 모든 가능한 쌍을 검사하므로, 시간 복잡도는 O(n^2)입니다.