공부한것들을 정리하는 블로그 입니다.
브루트 포스(Brute Force) 본문
반응형
브루트 포스(Brute Force)
브루트 포스는 '모든 경우의 수'를 다 해보는 것이다.
이 때, 경우의 수를 다 해보는데 걸리는 시간이 문제의 시간 제한을 넘지 않아야 한다.
( * '모든 경우의 수' : 가능한 벙법 )
따라서 브루트 포스 문제의 경우 '모든 경우의 수'가 몇가지 나오는지 알아보는 것이 상당히 중요
브루트 포스는 모든 방법을 1번씩 시도해보기 때문에 아래 3가지 단계를 생각해볼 수 있다.
1. 문제의 가능한 경우의 수를 계산해본다.
• 직접 계산을 통해서 구한다. 대부분 손으로 계산해볼 수 있다.
2. 가능한 모든 방법을 다 만들어본다.
• 하나도 빠짐 없이 만들어야 한다.
• 대표적으로 그냥 다 해보는 방법, for문 사용, 순열 사용, 재귀 호출 사용, 비트마스크 사용이 있다.
3. 각각의 방법을 이용해 답을 구해본다.
• 브루트 포스 문제의 시간 복잡도는 대부분 O(경우의 수 *방법 1개를 시도해보는데 걸리는 시간복잡도)가 걸린다.
여기서 재귀 호출 사용하는 방법이 가장 중요하다. 순열이나 비트마스크 사용을 몰라도 재귀 호출을 사용 할 줄 알면 대체가 가능하기 때문이다.
반응형
'알고리즘 > 백준 - 이론 공부' 카테고리의 다른 글
순열 Permutation (Java) 2가지 방법(swap, visited) (0) | 2022.10.21 |
---|---|
알고리즘 유형(판단 기준 팁) (0) | 2022.07.19 |
깊이우선탐색(DFS)와 너비우선탐색(BFS) (0) | 2022.05.18 |
Java 입출력과 시간 복잡도, 입/출력 시간 비교 (0) | 2022.05.16 |
브루트 포스 - 경우의 수 (0) | 2022.04.26 |
알고리즘 문제 추천 50문제 (0) | 2022.03.29 |
Comments