문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges