mississippi라는 문자열이 있다. 여기에서 ssi라는 문자열을 찾으려고 한다면 어떻게 해야 할까? 완전 탐색을 사용한다면 O(NM)의 시간 복잡도 안에서 해결할 수 있을거라고 생각한다. 앞글자가 일치하는 단어를 찾고 그 이후부터 글자가 동일한지 아닌지를 비교하면 될것이다. 하지만 이런 방법은 당연히 시간초과가 날 수 밖에 없다. 하지만 Rabin-Karp알고리즘을 사용하면 그 문제를 해결 할 수 있다. Rabin - Karp 알고리즘은 문자열 검색을 할 때 해시값을 이용하는 기법이다. 패턴 내의 문자들을 일일이 비교하는 대신에 패턴의 해시값과 비교할 문자열의 부분 문자열의 해시값만을 비교한다. 최악의 경우에 O(NM)의 시간복잡도를 가지지만, 평균적으로는 선형시간의 시간 복잡도를 가지기 때문에 효..