CodingTest/Programers

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

JunJangE 2022. 4. 26. 00:47

문제

 

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

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

programmers.co.kr

알고리즘

- 반복문을 통해 문자열 압축 길이를 변경한다.

- 반복문을 통해 문자열을 확인한다.

- 문자열을 압축하여 값을 비교한다.

- 값이 같으면 cnt를 카운트한다.

- 값이 다르다면 cnt에 따라 res에 문자열을 추가한다.

- 문자열을 추가했다면 문자열 압축 길이를 새롭게 초기화한다.

- 반복문이 끝나면 문자열 압축 길이가 최소인지 비교한다.

코드

# 16:20 => 17:18
def solution(s):
    answer = len(s)
    
    # 반복문을 통해 문자열 압축 길이 변경
    for i in range(1, len(s) // 2 + 1):
        res = ""
        temp = s[:i] # 문자열 압축 길이
        cnt = 1
        
        # 반복문을 통해 문자열 확인
        for j in range(i, len(s) + i, i):
            # 문자열 압축
            if temp == s[j : j + i]:
                cnt += 1
            
            else:
                if cnt == 1:
                    res += temp
                else:
                    res += str(cnt) + temp
                    
                temp = s[j : j + i] # 문자열 압축 길이 초기화
                cnt = 1
        
        # 문자열 압축 길이 최소
        answer = min(answer, len(res))
            
    return answer

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com