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