CodingTest

SWEA - 패턴 마디의 길이(2007)

취업하고싶다! 2023. 10. 23. 19:40

 

문제

패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.


[제약 사항]
각 문자열의 길이는 30이다. 마디의 최대 길이는 10이다.


[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다.

 

 

 

접근방식

입력되는 문자열을 words 변수에 받음

그리고 문자열을 한 문자씩 자르기 위해 list(words)를 listed_words라는 변수에 할당

빈 배열 arr를 선언해주고 listed_words길이만큼 j를 인자로 for문을 돌면서 j번째 문자가 arr에 없으면 arr에 할당해줌

만약 문자가 있으면 해당 문자가 문자열 반복이 끝나고 나오는 문자열의 첫 번째 문자인지 확인하는 과정이 필요함

현재 인자가 j일 때 arr[0:j]까지의 문자열과 arr[j:j+j]의 문자열이 같다면 arr[0:j]가 반복되는 문자열이므로 arr의 길이만큼 출력해줌

만약 아니면 반복되는 문자열이 아니므로 해당 인자값을 인덱스로 arr에 할당해줌

 

 

코드

T = int(input())
for i in range(1, T+1):
    words = str(input())
    listed_words = list(words)
    arr = []
    for j in range(len(listed_words)):
        if listed_words[j] not in arr:
            arr.append(listed_words[j])
        else:
            if arr[0:j] == listed_words[j: j+j]:
                print('#'+str(i), len(arr))
            else:
                arr.append(listed_words[j])