[코딩테스트][백준] 🔥 백준 1305번 "광고" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2024년 10월 11일
post-thumbnail

문제 링크

https://www.acmicpc.net/problem/1305

🕒 Python 풀이시간: 5분

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으로 백준의 "광고" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글