-
4354번: 문자열 제곱
알파벳 소문자로 이루어진 두 문자열 a와 b가 주어졌을 때, a*b는 두 문자열을 이어붙이는 것을 뜻한다. 예를 들어, a="abc", b="def"일 때, a*b="abcdef"이다. 이러한 이어 붙이는 것을 곱셈으로 생각한다
www.acmicpc.net
코드
while 1: s=input() if s==".": break else: s_len=len(s) p_table=[0 for _ in range(s_len)] j=0 for i in range(1,s_len): while j>0 and s[i]!=s[j]: j=p_table[j-1] if s[i]==s[j]: j+=1 p_table[i]=j p_len=s_len-p_table[s_len-1] if s_len % p_len == 0: print(s_len//p_len) else: print(1)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1786번 찾기 (파이썬) (0) 2022.01.06 [백준] 11723번 집합 (파이썬) (0) 2022.01.06 [백준] 15681번 트리와 쿼리 (파이썬) (0) 2022.01.06 [백준] 9372번 상근이의 여행 (파이썬) (0) 2022.01.06 [백준] 1717번 집합의 표현 (파이썬) (0) 2022.01.06