Search
Duplicate

문자열 압축

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

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