320x100
Goal
1. 브루트포스 알고리즘이 무엇인지에 대하여 정확히 이해한다.
2. 브루트포스 알고리즘이 쓰이는 문제의 종류에 대하여 정리한다.
브루트포스(brute force) 알고리즘이란?
브루트포스 알고리즘이란, 완전 탐색 알고리즘을 말한다.
즉, 가능한 모든 경우의 수를 탐색하면서 조건문을 통해서 요구조건이 충족되는 결과를 도출해 낸다.
모든 경우의 수를 탐색한다 -> 예외 없이 100%확률로 답을 가져올 수 있다.
- 알고리즘 설계의 가장 근본적인 방법은 해가 있을 곳을 예상해서 탐색하는 것이다.
- 브루트포스 알고리즘은 전체 구역을 탐색한다.
- 전체 구역을 탐색하는 방법은 선형구조를 전체 탐색하는 순차 탐색 (반복문을 통한 전체 순차 탐색), 비선형 구조를 전체 탐색하는 DFS(깊이 우선 탐색), BFS(너비 우선 탐색)의 방법이 있다.
보통 DFS는 백트래킹 기법 (브루트포스와 유사하지만, 백트래킹 기법은 가지치기 즉, 해당 부분에 해가 없을 것으로 판단되면 그 부분에 대한 탐색을 멈추는 기법을 말한다.)
BFS는 브루트포스에 많이 쓰인다.
이후 DFS와 BFS를 다룰 때 더 자세히 쓰도록 하겠다.
문제 해결 방법
문제의 데이터를 해를 적절히 찾을 때까지 전부 탐색한다.
예시 및 추천 문제
백준 - BOJ 단계별 문제 브루트포스
https://www.acmicpc.net/problem/2798
https://www.acmicpc.net/problem/7568
문제 해결 과정은 업로드 예정!
위 문제들은 간단히 반복문만 돌려도 충분히 풀 수 있는 문제들이니 충분히 생각해보고 풀어봤으면 한다.
이 외에 브루트포스 문제 중 시간 제한 상 DFS,재귀를 써야하는 문제들은
백준
https://www.acmicpc.net/problem/16943
https://www.acmicpc.net/problem/1527
등이 있다.
728x90
'알고리즘' 카테고리의 다른 글
[알고리즘] 다익스트라 알고리즘 (0) | 2022.08.02 |
---|---|
[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) 의 개념과 차이 (0) | 2022.06.27 |
정렬 알고리즘 정리 (0) | 2021.10.31 |