완전탐색 : 브루트포스 알고리즘 Brute Force Algorithm

Brute : 무식한

Force : 힘

직역하면, 무식한 힘을 갖는 알고리즘이란 뜻으로, 완전 탐색 알고리즘의 한 종류이지만 완전 탐색의 또 다른 이름으로 쓰이기도 한다. 브루트 포스 알고리즘은 완전탐색으로 답을 도출하는 알고리즘이며, 대부분은 반복문과 조건문을 통하여 답을 도출한다.

모든 경우의 수를 전부 탐색하기 때문에, 100%의 정확성을 보장하지만,

모든 경우의 수를 전부 탐색하기 때문에, 높은 시간 복잡도를 갖는다.


완전 탐색과 브루트포스 알고리즘의 차이

브루트 포스와 완전탐색은 의미차이가 거의 없기 때문에, 같은 의미로 쓰이기도 한다. 영어로도 완전탐색은 Exhaustive Search 라고도 하고, Brute Force Search 라고도 한다.

하지만, 이 둘은 아주 작은 차이가 있다.

먼저, 완전 탐색 알고리즘은 모든 경우의 수를 전부 탐색하는 방식의 알고리즘을 칭하며, 그 결과를 찾는 것보다 탐색한다는 과정에 중점을 둔다.

하지만, 브루트포스 알고리즘은 문제를 해결 하기 위하여, 모든 경우를 탐색하고 답을 도출하는 알고리즘으로, 결과를 찾는 것에 중점을 둔다.

즉, 주 된 목적이 탐색과정이냐, 답을 도출하는 것이냐의 차이가 있는 것이다.


브루트포스 알고리즘의 사용 조건

1. 문제에서 달성하고자 하는 솔루션이 잘 정의 되어 있어야한다.

솔루션이 잘 정의되어 있지 않은 문제라면, 브루트 포스를 사용한 솔루션이 올바른지의 여부를 확인할 수 없다.

2. 문제를 해결할 수 있는 풀이의 수가 제한되어 있어야 한다.

문제에서 고려해야할 솔루션의 수가 한정되어 있어야 한다. 고려해야할 솔루션의 수가 무한하거나 너무 크면 브루트포스 알고리즘은 효율적이지 않은 방법이다.