초간단 알고리즘 설명

[알고리즘 설명][Python] 브루트 포스 알고리즘(brute force)

lamp2357 2026. 6. 12. 02:41

이 게시글은 CS(컴퓨터공학) 프로그래밍 기초를 어느 정도 알고 있다고 가정하고 아주 간단하게 설명하는 게시글입니다.

혹시나 모르는 부분이 있으면 댓글로 질문해주세요.

 

이번에는 브루트 포스 알고리즘(Brute Force)입니다.

이 알고리즘은 이름을 보면 뭔가 멋있는 알고리즘으로 보이죠?

그런데 실상은 "무식하게 나올 때까지 전부 다 탐색하자!"입니다.

예시 하나 들어볼까요?

비밀번호가 3945라고 가정합니다.

브루트 포스 알고리즘을 활용하면 0부터 9999까지 모두 다 대입해서 비밀번호 3945를 찾아냅니다.

import sys

input = sys.stdin.readline

target:int = 3945
status:bool = False

password:int = 0

while password <= 9999 :
    if password == target :
        status = True
        break
    password += 1

if status :
    print(f"자물쇠가 해제되었습니다! 비밀번호는 {password}입니다.")
else :
    print("비밀번호를 찾지 못 했습니다.")

이것을 소스 코드로 구현하면 다음과 같습니다.

현실에서 자물쇠 번호를 맞출 때 일일히 다 맞춰가는 것과 동일합니다.

 

또 다른 예시가 존재합니다.

import sys

input = sys.stdin.readline

def find_number(target:int) -> bool :
    L:list = [3, 4, 5, 1, 2, 9, 8, 7, 0]
    
    for index in range(len(L)) :
        if L[index] == target :
            return True
    
    return False

print(find_number(7)) # 결과 : True
print(find_number(6)) # 결과 : False

 "혹시 리스트 안에 해당 숫자가 있는지 찾을려면 어떻게 해야 하나요?"

이진 탐색 등의 알고리즘을 활용하는 방법도 있지만 만약 양자 컴퓨터 수준의 놀라운 성능이라서 알고리즘 구현하는데 머리가 아프다면 그럴 때 브루트 포스 알고리즘을 사용해주세요!

모든 경우를 다 탐색해서 예외 사항이 존재하지 않습니다!

만약 프로그램 실행을 했는데 속도가 느리다면 그 컴퓨터 성능이 느린 탓으로 할 수 있는 것이 브루트 포스 알고리즘의 매력입니다!

물론 실제로는 데이터 개수가 적을 때만 유용하고, 데이터 개수가 많아지면 브루트 포스 알고리즘은 명확히 한계점이 존재합니다.

 

브루트 포스 알고리즘은 이렇게 암기해주세요.

"모든 경우의 수를 다 찾아주는 상남자 알고리즘!"

"만약 속도가 느리다면 컴퓨터 성능 탓을 할 수 있는 상남자 알고리즘!"

이렇게만 외워주시면 여러분도 브루트 포스 알고리즘을 쉽게 구현할 수 있습니다!