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)
핵심 정리🎁
좋은 풀이였는지는 잘 모르겠지만 풀어본 방식을 소개해보겠다.
- 반복된 글자를 찾는다.
- 조건으로 주어지지 않았지만, 주어진 테스트 케이스를 통해 문자열은 반드시 반복되는 글자로 시작된다는 것을 확인할 수 있었다. 따라서 반복되는 글자가 끝나는 n번째 인덱스를 문자열에서 찾는 것을 목표로 했다.
(만약 해당 가정이 통하지 않은 문제였다면 난이도가 더 높았을 것 같다) - 1) 문자열의 첫번째 글자(한 단어)를 x로 설정하고 반복되는 글자 여부를 확인했다.
2) 문자열에서 x를 제외한 다음 문자열(의 앞부분)이 x와 같은 단어일 때, 반복되는 글자임을 확인하고 while문을 break 했다. x의 길이만큼 다음 문자열의 앞부분 길이를 확인한다.(= idx 길이만큼의 단어)
3) 만약 2 과정이 참이 아닐 때, x의 길이를 하나씩 증가시키는 while문을 반복한다.
- 조건으로 주어지지 않았지만, 주어진 테스트 케이스를 통해 문자열은 반드시 반복되는 글자로 시작된다는 것을 확인할 수 있었다. 따라서 반복되는 글자가 끝나는 n번째 인덱스를 문자열에서 찾는 것을 목표로 했다.
- 마디의 길이를 찾는다.
- 문자의 길이를 증가시키는 과정에서 idx를 기준으로 정의했었다. 따라서 마디의 길이는 idx 값과 일치한다.
링크💎
후기 😎
- 직접 풀어냈지만 해설을 하면서 좀더 다양한 케이스를 생각해보게 되는 것 같다. 그럼에도 불구하고 글을 읽는 분들께서 이해가 될 수 있게 글을 썼는지는 의문.. ㅎ
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] #2001. 파리퇴치_파이썬 (0) | 2022.07.26 |
---|---|
[SWEA] #4406. 모음이 보이지 않는 사람_파이썬, 리스트 특정 요소 모두 제거 (0) | 2022.07.18 |
[SWEA] 1985. 중간 평균값 구하기_파이썬 (0) | 2022.07.15 |
[SWEA] 1926. 간단한 369 게임_파이썬 (0) | 2022.07.15 |
[SWEA] 1204. 최빈수 구하기_파이썬 (0) | 2022.07.15 |