여름의 서재

[알고리즘 종류] 브루트 포스 (Brute Force) 본문

알고리즘/알고리즘 종류

[알고리즘 종류] 브루트 포스 (Brute Force)

엉아_ 2021. 8. 13. 21:01
728x90

- 브루트 포스

  • 패턴 매칭에 사용되는 알고리즘
  • 본문 문자열을 처음부터 끝까지 차례대로 순회하면서 패턴 내의 문자들을 일일이 비교하는 방식으로 동작
  • 시간 복잡도 : O(MN)
# 1.
def bruteforce(p, t):
    M = len(p) # 찾을 패턴의 길이
    N = len(t) # 전체 텍스트의 길이
    
    for i in range(N-M):
        for j in range(M):
            if p[i+j] == t[j]:
                j+=1
            else:
                break
        if j == M:
            return i  # 검색 성공
    return -1 # 검색 실패
# 2.
def bruteforce(p, t):
	M = len(p) # 찾을 패턴의 길이
	N = len(t) # 전체 텍스트의 길이
    i = 0 # t의 인덱스
    j = 0 # p의 인덱스
    while j < M and i < N:
        if t[i] != p[j]:
            i = i - j
            j = -1
        i = j + 1
        j = j + 1
    if j == M : 
        return i - M # 검색 성공
    else:
        return -1 # 검색 실패
Comments