일반적으로 파이썬에서 문자열 검색을 하려면 표준 라이브러리(in, not in)를 사용하는 것을 추천하지만, 사용하지 않는다면 브루트 포스법이나 보이어-무어법을 사용하는 경우가 많습니다. 보이어-무어법 KMP법보다 효율적이어서 실제 문자열 검색에서 널리 사용됩니다. 패턴의 끝 문자에서 시작하여 앞쪽을 향해 검사를 수행합니다. 이 과정에서 일치하지 않는 문자를 발견하면 미리 준비한 표를 바탕으로 패턴이 이동하는 값을 결정합니다. ① ABCXDEZCABACABAC에서 ABAC를 검색하는 과정 ② 텍스트와 패턴의 첫 문자를 위아래로 나란히 놓고 패턴의 마지막 문자 C에 집중합니다. X는 패턴 안에 포함되어 있지 않습니다. 패턴을 오른쪽으로 한칸씩 이동해도 말이죠. ③ 한번에 오른쪽으로 4칸을 밀어서 다음과 같..
자료구조/문자열 검색
브루트 포스법 전수 공격법으로, 문자열에 맞는 모든 경우의 수를 다 체크하는 방식입니다. 전체 문자열과 찾는 대상 문자열, 두 문자열의 검색 위치를 잡아주는 pt, pp 변수를 선언하고 확인해나갑니다. def bf_match(txt: str, pat: str) -> int: pt = 0# txt를 따라가는 커서 pp = 0# pat를 따라가는 커서 while pt != len(txt) and pp != len(pat): if txt[pt] == pat[pp]: pt += 1 pp += 1 else: pt = pt - pp + 1 pp = 0 return pt - pp if pp == len(pat) else -1 ① ABABCDEF 에서 ABC 검색 ② pt = 2, pp = 2 까지 증가 ③ txt[p..