본문 바로가기
백준 (코테)

브루트 포스 알고리즘

by 코린이의 세계 2024. 8. 25.

백준 문제를 풀기 전에, "브루트 포스" 알고리즘에 대한 공부를 선행하였다.


브루트 포스(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

 

브루트 포스

브루트 포스 (brute force), 키 전수조사 (exhaustive key search) 또는 무차별 대입

namu.wiki

(관련 서술은 위 나무 위키도 참고해 주자.)

코드로 예시를 들자면 다음과 같을 것이다.

int sum = 0;
   for(int i = 1; i <= n; i = i + 1)
      if(n % i == 0)
         sum = sum + i;

단순히 모든 경우의 수의 for문을 돌리는 알고리즘이지만, 이것을 브루트 포스라고 부른다.