SSAFY/SWEA

[SWEA] 2007. 패턴 마디의 길이_파이썬

728x90
반응형

풀기 전 생각해보기😮

  • 주어진 문자열 속에서 반복되는 글자를 어떻게 찾을 것인가
  • 글자가 몇번 반복했는지 확인하는 방법

 


풀이🛫

#2007. 패턴 마디의 길이

T = int(input())

for i in range(T):
    words = input()
    x = words[0]  # x: 반복되는 글자
    idx = 0  # idx: x의 길이, 풀이 기준
    
    while True:
        idx += 1
        if x == words[len(x):2*len(x)]:
            break
        else:
            x = words[:idx]
    
    print("#"+str(i+1),idx-1)

 

핵심 정리🎁

좋은 풀이였는지는 잘 모르겠지만 풀어본 방식을 소개해보겠다.

  1. 반복된 글자를 찾는다.
    • 조건으로 주어지지 않았지만, 주어진 테스트 케이스를 통해 문자열은 반드시 반복되는 글자로 시작된다는 것을 확인할 수 있었다. 따라서 반복되는 글자가 끝나는 n번째 인덱스를 문자열에서 찾는 것을 목표로 했다.
      (만약 해당 가정이 통하지 않은 문제였다면 난이도가 더 높았을 것 같다)

    • 1) 문자열의 첫번째 글자(한 단어)를 x로 설정하고 반복되는 글자 여부를 확인했다.
      2) 문자열에서 x를 제외한 다음 문자열(의 앞부분)이 x와 같은 단어일 때, 반복되는 글자임을 확인하고 while문을 break 했다. x의 길이만큼 다음 문자열의 앞부분 길이를 확인한다.(= idx 길이만큼의 단어)
      3) 만약 2 과정이 참이 아닐 때, x의 길이를 하나씩 증가시키는 while문을 반복한다.

  2. 마디의 길이를 찾는다.
    • 문자의 길이를 증가시키는 과정에서 idx를 기준으로 정의했었다. 따라서 마디의 길이는 idx 값과 일치한다.

 

링크💎

 

SW Expert Academy

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

swexpertacademy.com

 

후기 😎

  • 직접 풀어냈지만 해설을 하면서 좀더 다양한 케이스를 생각해보게 되는 것 같다. 그럼에도 불구하고 글을 읽는 분들께서 이해가 될 수 있게 글을 썼는지는 의문.. ㅎ