본문 바로가기
알고리즘

Programmers - 문자열 압축(Python)

by 장중앙 2021. 9. 6.

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

 

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

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

programmers.co.kr

 

풀이

1 ~ s의 길이//2 만큼  단위를 늘려가면서 탐색

단위 만큼 확인 하면서 같다면 cnt갱신 다르면 cnt를 포함한 단위 문자열을 추가

def solution(s):
    MIN=int(987654321)
    length=len(s)
    if(len(s)==1):
        return 1;
    
    for cut in range(1, length//2+1): # 문자열 단위 1 ~ len(s)//2
        cnt=1
        res=""
        comp=s[:cut]
        for idx in range(cut, length, cut):
            if comp==s[idx:idx+cut]:
                cnt+=1
            else:
                if cnt==1:
                    cnt=""
                res+=str(cnt)+comp
                comp=s[idx:idx+cut]
                cnt=1
        if cnt==1:
            cnt=""
        res+=str(cnt)+comp
        
        if MIN > len(res):
            MIN=len(res)

    return MIN

댓글