[Programmers] 문자열 압축 python
5813 단어 programmersalgorithmalgorithm
🏷 문제
💡 코드
def solution(s):
s_list=[]
if len(s) == 1:
return 1
# 절반 이상 자르는 경우는 X
for i in range(1, (len(s)//2)+1):
res = ''
# abab = 2ab가 되어야 하므로 0이 아닌 1로 초기화
cnt = 1
# 차례로 [0:1]-1개단위, [0:2]-2개단위, [0:3]-3개단위 ...
before = s[:i]
# i부터 i만큼 문자를 계속 자름
# ex_ i=3이면, 위에서 [0:3]까지가 들어있는 before와 밑의 경우를 비교
for j in range(i, len(s)+i, i):
if s[j:j+i] == before:
cnt += 1
else:
# 이전과 전혀 연관이 없는 경우에는 결과값에 before를 그대로 넣어줌
if cnt == 1:
res += before
# 이전까지 연관이 있는 경우가 있었다면, 그 전까지의 before를 cnt와 함께 넣어줌
else:
res = res + str(cnt) + before
# cnt 초기화를 해주어야 다시 1부터 셀 수 있음
cnt = 1
# 다음 비교대상 설정
before = s[j:j+i]
# 마지막에 남은 문자들 처리
if cnt == 1:
res += before
s_list.append(len(res))
return min(s_list)
while True:
s = input()
res = solution(s)
print(res)
🔑
엣지케이스의 중요성,,,,,
Author And Source
이 문제에 관하여([Programmers] 문자열 압축 python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sorzzzzy/Programmers-무저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)