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