https://www.acmicpc.net/problem/1305
def create_psl(pattern):
i=0
table=[0]*len(pattern)
for j in range(1,len(pattern)):
while i>0 and pattern[i]!=pattern[j]:
i=table[i-1]
if pattern[i]==pattern[j]:
i+=1
table[j]=i
return table
l=int(input())
s=input()
table=create_psl(s)
print(l-table[l-1])
광고판에 문자열이 반복적으로 지나갈 때, 이때 최소 반복 패턴의 길이를 구하는 문제이다. 단순히 PSL을 구하는 방법을 통해 구할 수 있다. 전체 문자열의 길이에서 해당 PSL의 길이를 빼면 최소 반복 패턴이 되므로 이를 구해주고 출력하면 된다.
이렇게 Python으로 백준의 "광고" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊