s | result |
---|---|
"aabbaccc" | 7 |
"ababcdcdababcdcd" | 9 |
"abcabcdede" | 8 |
def solution(s):
answer = len(s)
for step in range(1, len(s) // 2 + 1):
tmp = ''
target = s[0 : step] # 지금 비교할 문자 기준
cnt = 1
for i in range(step, len(s), step):
if target == s[i : i + step]: # target과 이어지는 next 비교
cnt += 1 # 같으면 숫자 증가
else:
tmp += str(cnt) + target if cnt >= 2 else target
# 이때까지 압축한거 합산
target = s[i : i + step]
cnt = 1
# prev, cnt 초기화
tmp += str(cnt) + target if cnt >= 2 else target
answer = min(answer, len(tmp))
return answer
힌트 참고, Lv2 ~ 3 사이 정도 되는 듯