BruteForce 알고리즘의 정의는 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 암호를 해독하는 방법이다. 기본적으로 모든 경우의 수를 계산한다고 생각하면 되서 연관된 알고리즘으로는 순차탐색,DFS(깊이우선탐색),BFS(너비우선탐색)이 있다. 순차탐색관련 문제를 풀 때는 아래와 같은 방법으로 해결하면 된다.
1)문제에서 주어진 자료를 선형 구조로 구조화
2) 구조화된 자료들을 구조에 맞는 방법으로 해를 구할 때까지 탐색
3) 탐색한 해를 주어진 문제의 출력 형식에 맞게 정리
여기서 선형구조라 함은 -데이터가 연속적으로 연결되어 있는 모양으로 구성하는 방법으로, 아래와 같은 것들이 있다.
우선 브루트포스의 단점으로는 수가 커질수록 시간이 오래걸린다는 것이다. 처음 정의 그대로 모든방법을 실행하는 것이기 때문에 당연히 수가 커지면 그럴 수 밖에 없다. 반대로 장점은 모든 경우의 수를 전부돌리기 때문에 잘 짜기만하면 예외없는 무조건적인 답이 나온다는 것이다. 부르트포스는 뭔가 딱히 설명할게 없고 그냥 이렇게 멍청하게 짜도 되나 하는 생각이 들게 그냥 모든경우의 수를 짜면 되는 것 같다. 가장 단순하지만 강력한 알고리즘이다. 이후에 연관된 DFS와 BFS를 설명할 때 다시 한번 간단하게 설명하겠다.
728x90
반응형
'코딩테스트 > 파이썬 알고리즘' 카테고리의 다른 글
Function-[sys.stdin.readline()] (0) | 2021.11.27 |
---|---|
Algorithms-[DFS] (0) | 2021.11.26 |
Algorithms-[Greedy] (백준 #11047 [동전0]) (0) | 2021.11.21 |
Algorithms-[Bit Mask] (0) | 2021.11.17 |
코테 준비 문제집 순서 (0) | 2021.11.09 |