Brute Force

RIAN.P·2025년 5월 1일

ALGORITHM

목록 보기
1/8

브루트포스 알고리즘

: 무식하게 전부 다 시도해보는 방식. 가능한 모든 경우를 일일이 확인하면서 정답을 찾는 방식


브루트포스 알고리즘의 특징

  • 방식: 모든 경우를 하나하나 다 탐색해서 답을 찾음
  • 장점
    • 구현이 간단하다.
    • 정답을 확실히 찾을 수 있다.
  • 단점
    • 시간이 오래 걸린다. (비효율적)
    • 입력이 커지면 시간 초과 발생 가능
  • 사용 예시
    • 조합, 순열, 패턴 찾기
    • 범위가 작거나, 최적화보다 확실한 정답이 중요한 문제

언제 사용하면 좋은가?

  • 입력 범위가 작고 (N ≤ 1,000, N ≤ 10,000 정도)
  • 가능한 모든 경우의 수를 따져도 시간이 충분할 때

✏️ 요약
브루트포스는 단순하지만 강력한 접근 방식.
"될지 안 될지 모르니까 전부 다 해본다"는 마인드로, 경우의 수가 작을 때는 오히려 최적의 선택이 될 수 있다.


✔️ 브루트 포스 구현 방식

브루트 포스 = 탐색 방식에 대한 아이디어

  • 구현 방식
    1. 단순 반복문
      : 가능한 경우를 모든 for/while문으로 돌려보는 가장 기본적인 방식
      : 예) 1~1000 중 3의 배수 찾기
    2. 중첩 반복문
      : 2중, 3중 반복문을 통해 가능한 조합을 모두 탐색
      : 예) 체스판 문제, 암호 조합 찾기
    3. 순열
      : n개의 원소 중에서 r개를 순서를 고려해 나열한 모든 경우를 시도
      : 예) 숫자 자리를 바꿔 최댓값 만들기
    4. 조합
      : n개 중 r개를 순서 없이 뽑는 모든 경우를 시도
      : 예) 로또 번호 만들기
    5. 부분 집합
      : 집합의 모든 부분 집합을 고려해서 탐색
      : 예) 특정 합을 만족하는 부분 집합 찾기
    6. DFS (깊이 우선 탐색)
      : 그래프/트리 구조 또는 상태공간을 깊게 탐색하면서 경우를 시도
      : 미로 탐색, 경로 찾기
    7. BFS (너비 우선 탐색)
      : DFS와 유사하지만, 더 넓게 퍼지면서 경우를 시도
      : 예) 최소 이동 횟수 찾기
    8. 백트래킹 (Backtracking)
      : 가지치기를 하면서 불필요한 탐색은 중단하며 가능한 경우만 탐색
      : 예) N-Queen 문제, 스도쿠
    9. 비트 마스킹
      : 집합의 포함/제외 여부를 비트로 표현해서 빠르게 부분 집합 탐색
      : 예) 2^n 경우의 수를 비트로 처리

0개의 댓글