각 문자열의 길이는 30이다. 마디의 최대 길이는 10이다.
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다.
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력 | 출력 |
---|---|
3 | |
KOREAKOREAKOREAKOREAKOREAKOREA | #1 5 |
SAMSUNGSAMSUNGSAMSUNGSAMSUNGSA | #2 7 |
GALAXYGALAXYGALAXYGALAXYGALAXY | #3 6 |
for test_case in range(1, T + 1):
#print("testcase: ", test_case)
inputval = input()
# input에서 한줄을 인식해온다 - KOREAKOREAKOREAKOREAKOREAKOREA
for i in range(1, 11):
# range에서 0을 포함하지 않은 이유는
if inputval[ : i ] == inputval[ i : i * 2 ] :
# 하나의 패턴이 그 다음에도 반복된다면
if (inputval[:i] * (len(inputval)/i) == inputval):
#그리고 이 패턴이 문자열 끝까지 이어진다면
print("#"+test_case+ " " + i )
# 이 숫자가 문자열 중 가장 짧은 패턴일것이기 때문에 바로 break
break
라고 작성했는데 계속 runtime error 가 나타났다 SWEA 플랫폼은 처음이라 잘 모르겠어서 일단 여기에 글로써 남겨둔다
다른 사람들의 풀이도 검색해봤는데 내 풀이와 큰 차이가 없었고..? 당황스럽네
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] # 다음 패턴 입력
if i!=0 and pattern == next_pattern : # 다음 패턴과 이번 패턴이 같은경우
ans = len(pattern) # 길이 출력
break
print('#{} {}'.format(tc, ans))
흠 다시 봐도 내거랑 크게 다르지 않다 심지어 이 사람은 내가 추가로 고려해줬던 두번째 if 문에 해당하는 경우에 대한 예외사항을 체크하지 않았다
ex. aaaacaaaac의 경우에는 aaaac가 한 마디이므로 5가 되어야하는데, 이 코드대로 한다면 1을 리턴할 것이기 때문이다
아직은 왜 틀렸는지 잘 모르겠어서.. 일단은 여기에 적어두겠다
D2에 해당하는 문제여서 금방 풀었는데 컴파일은 되고 결과가 나오지 않아 당황스러울 뿐