알고리즘

KMP 알고리즘 (패턴 찾기)

1minair 2022. 11. 3. 20:15
728x90

시간복잡도 : O(N + M) 

N : 텍스트 길이

M : 패턴(탐색 문자열)의 길이

 

KMP 알고리짐에서 prefix(접두사) suffix(접미사)란?

: 문자열에서 맨앞과 맨 뒤에어서 같은 문자열이 나오는 경우

ex) ABCAB  -> 접두사 : AB, 접미사 : AB

 

핵심 아이디어 : 문자열이 불일치 할 때 앞서 탐색했던 정보를 이용하여 몇 칸 정도는 건너 뛴 후 탐색하겠다!

Simple

비교할 문자열의 인덱스는 계속 증가한다!다만 패턴의 인덱스가 pi 배열의 접두사 접미사가 일치하는 정보를 기반으로 비교하는 패턴의 인덱스가 변하는 것이다.!

이동했을 때 또한 다르면 당시의 pi배열 접두사 접미사의 정보를 가지고 또 건너 뛸 수 있다!

 

건너 뛴 후 preifx와 suffix가 일치해야한다는 전제 조건이 있다.

탐색 문자열의 접두사와 접미사를 미리 알고 있어야지, 얼만큼 건너뛸지 정할 수 있다.