Algorithm/Simulation

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

코딩쪼앙 2023. 3. 27. 16:28

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 풀이

  • 문자열을 압축하는 최대 길이는 len(s) // 2 이므로 하나부터 len(s) // 2 의 길이만큼 차례대로 잘라 가면서 앞 뒤 문자열이 같은지 하나씩 확인한다.
  • 앞 뒤 문자열이 같다면  반복되는 문자열 횟수와 문자열을 붙인다.
  • 앞 뒤 문자열이 같지 않다면 숫자 없이 문자열을 붙인다.
  • 남은 마지막 문자열에 대한 처리 또한 위와 같이 한 후, 문자열을 압축할 때 마다의 길이를 하나씩 확인하여 최소 길이를 출력

코드

s = 'abcabcdede'
def solution(s):
    result_len = len(s)
    s_len = len(s) // 2
    for i in range(1, s_len + 1):
        cnt = 1
        result = ''
        prev = s[:i]
        for j in range(i, len(s), i):
            now = s[j:j+i]
            if prev == now:
                cnt += 1
            else:
                if cnt >= 2:
                    result += str(cnt) + prev
                else:
                    result += prev
                prev = now
                cnt = 1
        # 남은 문자열 처리
        if cnt >= 2:
            result += str(cnt) + prev
        else:
            result += prev

        result_len = min(result_len, len(result))
    return result_len

print(solution(s))

'Algorithm > Simulation' 카테고리의 다른 글

[Python] 백준 2477번 참외밭  (1) 2023.05.03
[Python] 백준 14503번 로봇 청소기  (1) 2023.03.29
[Python] 백준 18406번 럭키 스트레이트  (0) 2023.01.30
[Python] 치킨배달  (1) 2023.01.26
[Python] 뱀  (0) 2023.01.25