Home [프로그래머스] 문자열 압축 - Python
Post
Cancel

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

이번에 해결해 볼 문제는 프로그래머스에 있는 문자열 압축이다.


문제 설명

  1. 문자열을 압축하려고 한다.
  2. 압축하는 방법은 다음과 같다.
    • 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현
    • 단, 문자가 반복되지 않는 경우 숫자를 제외하고 문자를 그대로 표현한다.(즉, 1은 표현하지 않는다.)
    • 단, 문자열은 제일 앞부터 정해진 길이만큼 잘라야 한다.

문제 해결 아이디어

  • 해당 문제의 앞부터 정해진 길이만큼이라는 제약조건 덕분에 이 문제를 해결하는 것은 어렵지 않다.
  • 정해진 길이만큼 이전 문자와 현재 문자를 비교해 가며 연속된 문자열의 수를 계산하면 된다.

문제 해결 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(s):
    answer = len(s)

    for step in range(1, len(s)//2+1):
        press = ''
        prev = s[0:step]
        count = 1
        for j in range(step, len(s), step):
            if prev == s[j:j+step]:
                count += 1
            else:
                press += str(count) + prev if count != 1 else prev
                prev = s[j:j+step]
                count = 1
        press += str(count) + prev if count != 1 else prev

        answer = min(answer, len(press))

    return answer

간단한 예시

This post is licensed under CC BY 4.0 by the author.

[프로그래머스] 무지의 먹방 라이브 - Python

[프로그래머스] 자물쇠와 열쇠 - Python