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
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[Python] 2819. 격자판의 숫자 이어 붙이기 - Python (0) | 2022.03.16 |
---|---|
[SWEA] 6190. 정곤이의 단조 증가하는 수 - Python (0) | 2022.03.13 |
[SWEA] 1926. 간단한 369게임 -Python (0) | 2022.03.10 |
[SWEA] 4880. 토너먼트 카드게임 - Python (0) | 2022.03.09 |
[SWEA] 4881. 배열 최소 합 - Python (0) | 2022.03.02 |
댓글