패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.
각 문자열의 길이는 30이다. 마디의 최대 길이는 10이다.
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다.
3
KOREAKOREAKOREAKOREAKOREAKOREA
SAMSUNGSAMSUNGSAMSUNGSAMSUNGSA
GALAXYGALAXYGALAXYGALAXYGALAXY
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
#1 5
#2 7
#3 6
T = int(input())
for test_case in range(1, T + 1):
a = list(input())
s = 0
answer = 0
for j in range(1, 10):
if a[0] != a[j] or a[1] != a[j +1]:
s += 1
else:
break
answer = s + 1
print("#%d" %test_case, answer)
a리스트의 0번 인덱스값과 1번 인덱스값이 다르거나, 1번 인덱스값과 2번 인덱스값이 다를 경우에 s(마디길이) 증가시킨다.
0번 인덱스값을 더해야하므로 answer = s + 1
<다른 풀이>
T = int(input())
for tc in range(1, T+1):
text = input()
pattern =[]
next_pattern=[]
ans = 0
for i in range(11): # 마디의 최대 길이가 10이므로 range(11)
pattern = text[:i] # patten리스트에 패턴 입력
next_pattern = text[i:i*2] # 다음 패턴 입력
#print(pattern)
#print(next_pattern)
if i!=0 and pattern == next_pattern : # 다음 패턴과 이번 패턴이 같은경우
ans = len(pattern) # 길이 출력
break
print('#{} {}'.format(tc, ans))
pattern에 0번 인덱스값부터 i번 인덱스값까지 넣는다.
next_pattern에 i+1번 인덱스값부터 i*2(i길이의 값)번 인덱스값까지 넣는다.
pattern과 next_pattern을 비교한다.