더북(TheBook)

 

▲ 그림 4-1 문자열 규칙을 확인하는 과정

이 그림은 예제 1번에서 문자열 2개를 전체 문자열과 일치하는지 비교하는 과정으로, 이런 식으로 모든 규칙을 문자열과 비교하면 분명히 겹치는 부분이 존재할 것이고 그 숫자를 세어서 그중 최솟값을 갖는 값을 찾으면 됩니다.

3. 압축 과정에서 나온 문자열의 길이와 원래 문자열의 길이를 비교합니다.

이제 앞서 선언했던 answer 변수와, 압축 문자열의 길이를 구하면 끝납니다.

answer = min(answer, comp_len)

 

전체 코드

4장/문자열_압축.py

def solution(s):
    answer = len(s)
    for x in range(1, len(s) // 2 + 1):
        comp_len = 0
        comp = ''
        cnt = 1
        for i in range(0, len(s) + 1, x):
            temp = s[i:i + x]
            if comp == temp: cnt += 1
            elif comp != temp:
                comp_len += len(temp)
                if cnt > 1: comp_len += len(str(cnt))
                cnt = 1
                comp = temp
        answer = min(answer, comp_len)      

    return answer

조건을 하나씩 확인해보면 정답을 다 알려주고 조합만 하면 풀리는 문제입니다. 엄청나게 어려워 보이지만 겁먹지 말고 천천히 문제를 분석하면 단서를 얻을 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.