[Python] BOJ 16916 - 부분 문자열
728x90
반응형
https://www.acmicpc.net/problem/16916
# KMP알고리즘을 사용하여 풀었다.
# 아직 정확히 이해하진 못해서, 나중에 이해한 뒤 다시 정리할 예정이다.
def KMP():
table = make_table()
j = 0
for i in range(len(s)):
while j > 0 and s[i] != p[j]:
j = table[j - 1]
if s[i] == p[j]:
if j == len(p)-1:
return True
else:
j += 1
return False
def make_table():
table = [0] * len(p)
j = 0
for i in range(1, len(p)):
while j > 0 and p[i] != p[j]:
j = table[j - 1]
if p[i] == p[j]:
j += 1
table[i] = j
return table
s = input()
p = input()
if KMP():
print(1)
else:
print(0)
(solved.ac 티어: 골드 4)
728x90
반응형
'문제풀이 > BaekjoonOnlineJudge' 카테고리의 다른 글
[Python] BOJ 3187 - 양치기 꿍(koze) (0) | 2021.08.05 |
---|---|
[Python] BOJ 2473 - 세 용액 (0) | 2021.08.04 |
[Python] BOJ 2470 - 두 용액 (0) | 2021.07.31 |
[Python] BOJ 1477 - 휴게소 세우기 (0) | 2021.07.30 |
[Python] BOJ 1806 - Subsequence(부분합) (0) | 2021.07.29 |
TAGS.