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

류성훈·2022년 7월 6일
0

코딩테스트

목록 보기
29/29

https://programmers.co.kr/learn/courses/30/lessons/60057?language=python3

쪼개야하는 문자 수만큼 for문을 돌려서 같은 문자열들을 압축시켜 나간다.

복잡해질 것 같아서 함수로 만들어 구현하였다.

def zip_string(x, i):
    arr = [x[i*j:i*(j+1)] for j in range(len(x)//i+1)]
    
    result = '' # 결과 문자

    if len(arr[-1]) != i:
        result += arr[-1]
        arr = arr[:-1]
    
    cnt = 1 # 압축 문자 갯수
    temp = arr.pop(0) # 비교 문자
    
    while arr:
        cur = arr.pop(0)
        
        if temp == cur:
            cnt += 1
        else:
            if cnt == 1:
                result += temp
            else:
                result += str(cnt)+temp
            temp = cur
            cnt = 1
            
    if cnt == 1:
        result += temp
    if cnt != 1:
        result += str(cnt) + temp
    
    return len(result)
        
        

def solution(s):
    
    answer = len(s)
    
    for i in range(1,len(s)//2+1): # 쪼개는 조각 수
        if answer > zip_string(s, i):
            answer = zip_string(s, i)
        
    return answer
profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글