본문 바로가기
Algorithm/프로그래머스

[프로그래머스] Lv2 - 문자열 압축 (파이썬)

by 2HS 2022. 3. 29.
 

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

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

programmers.co.kr

 

import sys


def solution(s):
    if len(s) == 1:
        return 1
    answer = sys.maxsize
    for i in range(1, len(s)//2+1):
        arr = s[:i]
        res = press(s, i, arr)
        answer = min(answer, len(res))
    return answer


def press(s, div, arr):
    count = 1
    res = ''
    for j in range(div, len(s)+1, div):
        if s[j:j+div] == arr:
            count += 1
        else:
            res = res+str(count)+arr if count != 1 else res+arr
            arr = s[j:j+div]
            count = 1
    res = res+str(count)+arr if count != 1 else res+arr
    return res

 

카카오 2020 블라인드
1. 1부터 최대로 자를 수 있는 len(s)//2까지 문자열을 자른다.
    - arr : 자른 문자열
    - press : 문자열을 압축한 결과 리턴 (div만큼 문자열 잘라서 검사, res : 축약한 문자열)
    - res의 결과가 가장 작은 값의 길이로 answer 초기화
2. res 출력