Develop/algorithm

프로그래머스 문자열 압축 (Python)

미니문92 2021. 7. 14. 11:24

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr


Test Case


문제풀이

너무 많이 풀어서 풀이가 외워져버린 문제.
문자열 + 구현문제로 연습하기에 너무 좋은 문제라고 생각.
문자열을 1,2,3.. 개로 나눠가며 해당 개수 단위별로 같은 부분이 생기면 카운트 +1, 다르면 이것저것 처리해줘야함

구현문제 많이 풀어봐야할 듯


Source Code

import sys
input = sys.stdin.readline

s = input().rstrip()
ans = len(s)

for step in range(1, len(s) // 2 + 1):
    ans_str = ""
    rep = s[0:0+step]
    cnt = 1
    for i in range(step,len(s),step):

        if rep == s[i:i+step]:
            cnt += 1
        else :
            ans_str += str(cnt) + rep if cnt >= 2 else rep
            rep = s[i:i+step]
            cnt = 1
    
    ans_str += str(cnt) + rep if cnt >= 2 else rep
    ans = min(ans, len(ans_str))
   
print(ans)