문자열 압축 (2020 KAKAO BLIND RECRUITMENT)

문제

[프로그래머스] 문자열 압축 (2020 KAKAO BLIND RECRUITMENT)


풀이

문자열을 쪼개는 단위 l (1개 ~ 문자열 s의 절반)에 따라 탐색한다.
l칸씩 step을 뛰어서 split[]에 쪼갠 문자열을 저장한 뒤 해당 문자열을 tmp에 압축한다.
압축 결과tmp가 기존res보다 더 짧으면 갱신한다.

def solution(s):
    res = s
    for l in range(1, len(s)//2+1):
        split = []
        for i in range(0, len(s), l):
            split.append(s[i:i+l])

        cnt = 1        
        tmp = ''
        for i in range(len(split)):
            if i+1 < len(split) and split[i] == split[i+1]: cnt += 1
            else:
                if cnt == 1: tmp += split[i]
                else: 
                    tmp += str(cnt) + split[i]
                    cnt = 1
        if len(tmp) < len(res):
            res = tmp
    return len(res)

좋은 웹페이지 즐겨찾기