프로그래머스

프로그래머스 - 문자열 압축

yanJuicy 2021. 8. 22. 13:36
반응형

문제

 

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

 

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

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

programmers.co.kr

 

 

풀이

 

문자열을 최대 len(s)/2의 길이만큼 압축할 수 있으므로 1 ~ len(s)/2 단위 길이로 모두 압축을 시도해보고, 압축 했을 때 각각의 길이를 비교해 최소 길이를 구한다.

 

 

코드

 

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(s):
    answer = len(s)
    result = ""
    for length in range(1len(s) // 2 + 1):
        unit = s[:length]
        cnt = 1
        for i in range(length, len(s), length):
            if s[i:i+length] == unit:
                cnt += 1
            else:
                if cnt == 1:
                    cnt = ""
                result += str(cnt) + unit
                unit = s[i:i+length]
                cnt = 1
        if cnt == 1:
            cnt = ""
        result += str(cnt) + unit
        answer = min(answer, len(result))
        result = ""
 
    return answer
cs
반응형