문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다.
압축할 문자열 s가 매개변수로 주어질 때, 위에 설명한 방법으로 1개 이상 단위로 문자열을 잘라 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 return 하도록 solution 함수를 완성해주세요.
문자 1개 단위부터 length(s의 길이) / 2 단위로 잘랐을 때의 압축된 문자열을 구한 후, 문자열 길이의 최소값을 구하면 된다.
def solution(s):
length = len(s)
answer = length
for i in range(1, length//2+1):
result = ''
tmp = s[:i]
num = 1
for j in range(i,length,i):
endIndex = i+j if i+j < length else length
next = s[j:endIndex]
if next == tmp :
num += 1
else :
result += (str(num) if num != 1 else '') + tmp
tmp = next
num = 1
result += (str(num) if num != 1 else '') + tmp
answer = min(answer, len(result))
return answer