본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 2007. 패턴 마디의 길이 - Python

by chaemj97 2022. 3. 11.
728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5P1kNKAl8DFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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


< ❓ 생각 >
문자열은 패턴이 반복되기 때문에 기준값의 처음은 항상 문자열의 맨 앞문자

슬라이싱을 이용해서 문자열을 비교하기

< 💻 코드 >

def pattern(s):
    j = 1
    length = 1
    while j < len(s):
        # 덩어리로 비교
        if s[0:length] == s[j:j+length]:
            length += 1
            # 패턴 마디라면 다음구간도 같아야함
            if s[0:length] == s[j+length:j+length+length]:
                return length
        else:
            j += 1

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    s = list(input())

    print(f'#{tc} {pattern(s)}')


< ❗ 느낀 점 >

고지식한 알고리즘이나 KMP알고리즘이 생각이 나 풀려고 했는데 그건 길이가 정해져 있어서 다른 방법을 찾는데 시간이 걸렸다ㅜ

728x90
반응형

댓글