https://school.programmers.co.kr/learn/courses/30/lessons/60057
코드1(while문 사용)
def solution(s):
answer = len(s)
for x in range(1,len(s)+1):
zip_str = s[0:x] # 처음 시작 문자열
idx = x
cnt = 1
new_str = ''
while idx<=len(s):
if s[idx:idx+x]==zip_str: # 같으면 압축 가능 -> cnt+1
cnt+=1
else: # 다르면 이어 붙임
if cnt>1: # 압축됐다면
new_str+=str(cnt)+zip_str # 숫자와 함께 붙임
else: # 압축 안되면
new_str+=zip_str # 그냥 붙임
cnt = 1 # cnt 초기화
zip_str = s[idx:idx+x] # 비교할 문자열 바꿈
idx+=x
if idx>len(s): # 인덱스가 넘어가면
new_str+=s[idx-x:] # 뒷부분은 따로 붙여줌
answer = min(answer, len(new_str))
return answer
코드2(for문 사용)
def solution1(s):
answer = len(s)
for x in range(1, len(s) + 1):
zip_str = s[:x]
cnt = 1
new_str = ''
for i in range(x, len(s)+x, x):
if s[i:i + x] == zip_str:
cnt += 1
else:
if cnt > 1:
new_str += str(cnt) + zip_str
else:
new_str += zip_str
cnt = 1
zip_str = s[i:i + x]
answer = min(answer, len(new_str))
return answer