본문 바로가기

알고리즘/프로그래머스

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

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

 

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

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

programmers.co.kr

풀이 방법

  • 1개~절반의 개수로 압축할 때의 문자열 길이 중 최솟값을 return한다. 
  • 문자열 비교는 슬라이싱을 이용한다. 

전체 코드

def solution(s):
    res = len(s)
    for cut in range(1, len(s)//2+1):
        answer = ''
        cnt = 1
        last = s[:cut]
        for i in range(cut, len(s), cut):
            if last == s[i: i+cut]:
                cnt += 1
            else:
                if cnt != 1:
                    answer += str(cnt)
                answer += last
                last = s[i: i+cut]
                cnt = 1
        if cnt != 1:
            answer += str(cnt)
        answer += last
        res = min(res, len(answer))
    return res

 

반응형