https://www.acmicpc.net/problem/1786
1786번: 찾기
첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m
www.acmicpc.net
KMP 알고리즘을 사용하는 기본적인 문제입니다. 다만 시간 제한도 빡빡하고 KMP 알고리즘 자체의 난이도 때문에 플레티넘이 되어버린 문제입니다. 또 입력이 ' ' 처럼 공백으로 들어올 경우 입력을 받을 때 strip 처리를 해버리면 인덱스 오류가 날 수 있으므로 주의해야 합니다.
아래 코드에 디버깅 코드가 삽입되어 있으므로 복사해서 그래도 돌려보면 터미널에 과정이 나옵니다. 이를 코드와 비교해보면 보다 수월하게 이해할 수 있습니다. 예시 인풋과 결과를 올립니다.
--input--
abaab
ab
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
---------------------------------
KMP_table : |0|0|
---------------------------------
T
v
abaab
ab
^
P
--answer--
2
1 4
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 14725 <개미굴> Python (1) | 2023.12.23 |
---|---|
백준 1305 <광고> Python (2) | 2023.12.22 |
백준 17386 <선분 교차 1> Python (0) | 2023.12.18 |
백준 25308 <방사형 그래프> Python (0) | 2023.12.18 |
백준 11758 <CCW> Python (1) | 2023.12.17 |