K
KRYFT Problem Bank
알고리즘 어려움 코딩

KMP 문자열 매칭

KMP 알고리즘으로 패턴 매칭 구현

20분
90점
3개 테스트케이스
#3712

문제 설명

Knuth-Morris-Pratt(KMP) 알고리즘을 구현하여 텍스트에서 패턴이 등장하는 모든 위치를 찾으세요.

KMP 알고리즘

실패 함수(failure function)를 이용해 불필요한 비교를 줄이는 문자열 매칭 알고리즘입니다.

입력 형식

첫 줄: 텍스트 T

둘째 줄: 패턴 P

출력 형식

패턴이 등장하는 모든 시작 인덱스 (0-indexed, 공백 구분)

제약 조건

  • 1 ≤ |P| ≤ |T| ≤ 1,000,000

예시

T = "ABABDABACDABABCABAB"
P = "ABABCABAB"
출력: 10

T = "AABAACAADAABAABA"
P = "AABA"
출력: 0 9 12

예제 테스트케이스

예제 1 단일 매칭
입력
ABABDABACDABABCABAB
ABABCABAB
출력
10
예제 2 다중 매칭
입력
AABAACAADAABAABA
AABA
출력
0 9 12
예제 3 매칭 없음
입력
ABCD
EF
출력
not found
실행 버튼을 눌러 코드를 실행하세요.