title: "[프로그래머스] 문자열 압축 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/60057"
description: "프로그래머스 Level 2 문제 [문자열 압축]의 풀이를 정리합니다."
def solution(s):
answer = len(s)
for k in range(1, len(s) // 2 + 1):
tokens = [s[k*i:k*(i+1)] for i in range(len(s) // k)]
rem = s[-(len(s) % k):] if len(s) % k != 0 else ''
# Run-length encoding
curr_token, n, enc = None, 0, []
for token in tokens:
if curr_token is None:
curr_token, n = token, 1
elif token == curr_token:
n += 1
else:
enc.append((n, token))
curr_token = token
n = 1
enc.append((n, token))
x = ''.join((str(n) if n > 1 else '') + token for n, token in enc) + rem
if len(x) < answer:
answer = len(x)
return answer
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges