문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do
문제
패턴에서 반복되는 부분을 마디라고 부른다.
문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.
[제약 사항]
각 문자열의 길이는 30이다. 마디의 최대 길이는 10이다.
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다.
출력
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예제
입력
3
KOREAKOREAKOREAKOREAKOREAKOREA
SAMSUNGSAMSUNGSAMSUNGSAMSUNGSA
GALAXYGALAXYGALAXYGALAXYGALAXY
출력
#1 5
#2 7
#3 6
정답 및 풀이
t = int(input())
for tc in range(t):
s = input()
pattern=s
for i in range(1,len(s)):
if s[0:i] == s[i:i+i]:
pattern=s[0:i]
break
print(f'#{tc+1} {len(pattern)}')
- t = int(input())
- 테스트 케이스 개수를 입력받는다.
- for tc in range(t): s = input()
- 각 테스트 케이스마다 문자열 s를 입력받는다.
- pattern = s
- 기본 패턴을 문자열 전체로 설정한다.
- 만약 작은 마디를 찾으면 그걸로 교체한다.
- for i in range(1, len(s)):
- 패턴 후보 길이를 1부터 문자열 길이-1까지 증가시키며 검사한다.
- if s[0:i] == s[i:i+i]:
- s[0:i] : 첫 번째 패턴 후보
- s[i:i+i] : 바로 뒤에 이어지는 동일 길이의 부분 문자열
- 두 부분이 같다면 패턴이 반복된 것으로 판단한다.
- pattern = s[0:i] break
- 반복 패턴을 찾았으므로 정답 패턴을 갱신하고 반복을 종료한다.
- print(f'#{tc+1} {len(pattern)}')
- 찾아낸 패턴의 길이를 출력한다.
'SWEA' 카테고리의 다른 글
| [SWEA] 2005 : 파스칼의 삼각형 (Python/파이썬) (0) | 2025.11.19 |
|---|---|
| [SWEA] 1979 : 어디에 단어가 들어갈 수 있을까 (Python/파이썬) (0) | 2025.11.19 |
| [SWEA] 1974 : 스토쿠 검증 (Python/파이썬) (0) | 2025.11.19 |
| [SWEA] 2072 : 홀수만 더하기 (Python/파이썬) (0) | 2025.11.18 |
| [SWEA] 1204 : 최빈수 구하기 (Python/파이썬) (0) | 2025.11.18 |