728x90
브루트 포스 알고리즘이란?
쉽게 말하면 모든 경우의 수를 무식하게 전부 다 탐색한다는 뜻이다.
전체를 탐색한다는 의미에서 전체 탐색, 완전 탐색이라고 한다.
- 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상되는 모든 영역을 전체 탐색하는 방법이다.
- 선형 구조를 전체적으로 탐색하는 순차 탐색, 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색(DFS, Depth First Search)과 너비 우선 탐색(BFS, breadth first search)이 가장 기본적인 도구이다.
브루트 포스의 장단점
브루트 포스의 장점
- 알고리즘을 설계하고 구현하기 매우 쉽다.
- 복잡한 알고리즘 없이 빠르게 구현할 수 있다.
브루트 포스의 단점
- 알고리즘의 실행 시간이 매우 오래 걸린다.
- 메모리 효율면에서 매울 비효율적이다.
- 모든 경우를 다 고려하기 때문에 효율적이지 못하다.
브루트 포스의 종류
브루트 포스는 크게 선형구조와 비선형 구조로 나뉜다.
선형 구조 : 순차 탐색
비선형 구조 : 백트래킹, DFS, BFS
브루트 포스의 간단 예시
만약 5자리의 비밀번호를 가진 자물쇠가 있고, 하나의 자릿수는 0~9까지의 수를 가진다고 가진다고 가정했을 때
이 자물쇠를 풀기위해서 브루트 포스 방식을 적용한다면 00000 ~ 99999 까지의 경우의 수를 돌려서 풀어야 할 것이다.
728x90
'Computer Science > Algorithm' 카테고리의 다른 글
[Algorithm] 유니온 파인드(Union-Find) 알고리즘 (0) | 2023.04.21 |
---|---|
[Algorithm] 플로이드 와샬(Floyd Warshall) 알고리즘 (0) | 2023.04.14 |
[Algorithm] 그리디 알고리즘 (Greedy) (2) | 2023.04.06 |
[Algorithm] Hash(해시) 란 (0) | 2023.03.18 |
[Algorithm] 시간복잡도와 공간복잡도 (2) | 2023.03.16 |