3. 만든 규칙을 전부 비교 검사합니다.
res = []
cur_word = words[0]
cur_cnt = 1
for pattern, compare in zip(words, words[1:] + ['']):
if pattern == compare: cur_cnt += 1
else:
res.append([cur_word, cur_cnt])
cur_word = compare
cur_cnt = 1
이제 만든 규칙끼리 모두 비교하면서 겹치는 규칙을 찾습니다. 일치하는 규칙이 확인되었을 경우 중복된 문자열과 중복 횟수를 리스트로 만들어 중복을 기록하는 변수(res)에 모두 넣습니다.
4. 압축 과정에서 나온 문자열의 길이와 원래 문자열의 길이를 비교합니다.
중복을 기록한 변수를 for 문으로 순회하면서 몇 번 중복됐는지 점검하고 발생했던 문자열을 모두 더하면 최종적으로 압축 과정을 수행한 결과가 몇 글자인지 알 수 있습니다.
return sum(len(word) + (len(str(cnt)) if cnt > 1 else 0) for word, cnt in res)