브루트 포스 (brute force)
- Brute : 무식한 + Force : 힘 = 무식한 힘
- 완전탐색 알고리즘
- 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져옴
- 브루트 포스 알고리즘을 설계할 때는 해가 하나 이상 존재한다는 가정을 세우고 모든 범위를 탐색하기 때문에 무조건 정답을 찾을 수 있음
- 어떤 방식으로든 전체 탐색으로 문제를 해결한다면 브루트 포스 알고리즘으로 풀었다고 할 수 있음
- 선형 구조를 전체적으로 탐색하는 순차탐색,
- 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)가 기본적인 도구
장점
- 알고리즘을 설계하고 구현하기 매우 쉬움
- 복잡한 알고리즘 없이 빠르게 구현 가능
단점
- 알고리즘의 실행 시간이 매우 오래 걸림
- 메모리 효율면에서 매우 비효율적
문제 해결 방법
- 주어진 문제를 선형 구조로 구조화 한다
- 구조화된 문제공간을 적절한 방법으로 해를 구성할 때 까지 탐색
- 구성된 해를 정리한다
브루트포스 예시
만약 10자리 비밀번호 자물쇠가 있다고 가정
브루트 포스 방식을 적용한다면 0000000000 ~ 9999999999 까지 모든 수를 대입해서 푼다
예제
GitHub - yeeun426/algorithmStudy
Contribute to yeeun426/algorithmStudy development by creating an account on GitHub.
github.com
GitHub - yeeun426/algorithmStudy
Contribute to yeeun426/algorithmStudy development by creating an account on GitHub.
github.com
'알고리즘' 카테고리의 다른 글
[알고리즘] 탐욕법(Greedy) (0) | 2024.02.06 |
---|---|
[알고리즘] 완전탐색 예제 # 1 단순 브루트포스 (0) | 2024.02.05 |
[알고리즘] 완전 탐색 (0) | 2024.02.02 |
[알고리즘] Hash (1) | 2023.12.06 |
[BOJ] 2738 : 행렬 덧셈 (node.js) (0) | 2023.03.26 |