본문 바로가기
코딩 테스트

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

by zoodi 2021. 3. 22.
728x90

🍒문제

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

 

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

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

programmers.co.kr

 

🍒풀이

1. 문자열의 절반만큼의 길이만 확인해도 된다.

2. 길이 1 ~ 문자열의 길이/2 길이만큼 반복문으로 검사

3. 이중 반복문으로 pivot이 되는 문자열을 비교 후

   3-1. 동일하면 cnt 증가

   3-2. 다르면 result 문자열 업데이트 , 새로운 pivot 문자열 업데이트

4. 마지막 문자열의 경우 반복문 마지막에 다시 한 번 검사

5. 최종적으로 result 문자열 길이가 answer보다 작으면 answer 갱신

 

🍒코드

def solution(s):
    answer = 9999
    result = ''
    size = 1
    max_size = int(len(s)/2)
    
    if(len(s) <= 1):
        return len(s)

    for i in range(1, max_size+1):
        res = ''
        cur = s[:i] #현재 문자열
        cnt = 1  #동일 문자 개수 count
        j = i
        while(j<len(s)):
            if cur == s[j:j+i]:
                cnt += 1
            else:
                if cnt > 1:
                    res += str(cnt) + cur
                else:
                    res += cur
                cur = s[j:j+i]
                cnt = 1
            j+=i
        #마지막 문자열 처리
        if cnt> 1:
            res += str(cnt)
        res += cur
        answer = min(answer, len(res))

    return answer
728x90

댓글