SWEA_2007 패턴 마디의 길이(파이썬)
2024. 8. 24. 23:21ㆍ알고리즘 풀이
문제
패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.
[제약 사항]
각 문자열의 길이는 30이다. 마디의 최대 길이는 10이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다.
[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력
3
KOREAKOREAKOREAKOREAKOREAKOREA
SAMSUNGSAMSUNGSAMSUNGSAMSUNGSA
GALAXYGALAXYGALAXYGALAXYGALAXY
출력
#1 5
#2 7
#3 6
생각
입력받은 문자열을 순회하면서 한 글자씩 check라는 리스트에 넣는다.
근데 무작정 넣으면 안되고 check에 없으면 넣고 있으면 뺀다.
우리는 글자 길이를 알아야하니까 넣고 뺄 때마다 숫자를 세어준다.
그러다가 완전 반복된 문자를 만나면 리스트는 비어진다.
우리가 1씩 증가시킨 cnt 값을 반절로 나누면 우리가 찾는 문자의 길이가 나온다.
코드
for _ in range(int(input())):
check = [] # 한글자씩 확인할 예정
ans = 0 # 문자의 길이를 넣을 공간
st = input() # 입력받은거
for s in st: # 입력받은 문자열을 한 문자씩 순회
if s not in check: # 리스트에 없으면 넣고
check.append(s)
ans += 1
else: # 있으면 빼준다.
check.pop(check.index(s))
ans += 1
if not check: # 리스트가 비었다면
ans = ans // 2 # 값을 반으로 나누어 답을 구함
print(f"#{_+1} {ans}")
break
'알고리즘 풀이' 카테고리의 다른 글
| 2001_파리퇴치 (1) | 2024.08.24 |
|---|---|
| 1983_조교의 성적 매기기 (2) | 2024.08.24 |
| SWEA_1953_달팽이숫자 (3) | 2024.08.24 |
| SWEA_2007 패턴 마디의 길이(파이썬) (0) | 2024.08.24 |
| 3304_최장 공통 부분 수열 (2) | 2024.08.24 |