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

cotato·2021년 5월 6일

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

My solution

def solution(s):
    str_len = len(s)
    min_len = str_len
    for cut_len in range(1, int((str_len + 1) / 2) + 1):
        combo = 1
        reduced_amt = 0
        for i in range(0, str_len - cut_len, cut_len):
            if i + cut_len > str_len:
                break
            if s[i:i + cut_len] == s[i + cut_len:i + 2*cut_len]:
                reduced_amt += cut_len
                combo += 1
                if combo == 2 or combo == 10 or combo == 100:
                    reduced_amt -= 1
            else:
                combo = 1
        
        result_len = str_len - reduced_amt
        if result_len < min_len:
            min_len = result_len
    
    return min_len

주의할 점

  • 압축할 때 문자열이 반복되는 횟수가 10번 이상일 경우 문자가 2개, 100번 이상인 경우 3개 추가된다는 점을 간과해서 조금 헤맸다.
profile
coding_potato

0개의 댓글