백준 문제를 풀기 전에, "브루트 포스" 알고리즘에 대한 공부를 선행하였다.
브루트 포스(brute force)
brute: 무식한, force: 힘 무식한 힘으로 해석할 수 있다.
완전탐색 알고리즘. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다.
이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답만을 출력한다.
즉, 요약하자면 "모든 경우의 수를 모두 탐색"하는 알고리즘인 것이다. (전문 용어로 노가다....)
경우의 수를 다 찾는 거라, 시간 복잡도는 높아질 수밖에 없다.
"모든 경우의 수" 탐색이기에,
대부분 브루트 포스는 반복문과 조건문을 이용해서 알고리즘을 만들게 된다.
쓰는 이유
그럼 이 "알고리즘"을 사용하는 이유가 뭘까?
간단하다.
예외 없이 100%의 확률로 정답만을 출력하는 이 부분이 사기적이기 때문이다.
암호학적인 부분에서 "100%"라는 숫자는 엄청난 수치인 셈이기 때문이다.
https://namu.wiki/w/%EB%B8%8C%EB%A3%A8%ED%8A%B8%20%ED%8F%AC%EC%8A%A4
(관련 서술은 위 나무 위키도 참고해 주자.)
코드로 예시를 들자면 다음과 같을 것이다.
int sum = 0;
for(int i = 1; i <= n; i = i + 1)
if(n % i == 0)
sum = sum + i;
단순히 모든 경우의 수의 for문을 돌리는 알고리즘이지만, 이것을 브루트 포스라고 부른다.
'백준 (코테)' 카테고리의 다른 글
15. [12단계] 제목: 브루트 포스 (3~4챕터) (2) | 2024.08.28 |
---|---|
14. [12단계] 제목: 브루트 포스 (1~2챕터) (1) | 2024.08.27 |
13. [11단계] 제목: 시간 복잡도 (3~7챕터) (0) | 2024.08.23 |
12. [11단계] 제목: 시간 복잡도 (1~2챕터) (0) | 2024.08.22 |
11. [10단계] 제목: 기하: 직사각형과 삼각형 (5~8챕터) (0) | 2024.08.21 |