본문 바로가기

알고리즘 공부/프로그래머스

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

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해결한 방법

def solution(s):
    len_str = len(s)  # 문자열 길이
    len_list = [len_str]   # 줄인 길이 리스트

    for i in range(1, len_str//2 + 1):  # 문자열 길이의 절반까지 나눠보기
        my_str = s
        plus_num = 0
        while(True):
            if len(my_str) <= i:
                break

            overlap = 0
            find_str = my_str[0:i]

            while(True):
                my_str = my_str.replace(find_str, "", 1)
                if my_str.find(find_str) == 0:
                    overlap += 1
                else:
                    break
            
            if overlap:
                plus_num += i+len(str(overlap+1))
            else:
                plus_num += i

        len_list.append(len(my_str) + plus_num)

    return min(len_list)