[프로그래머스] 문자열 압축 (2020 KAKAO BLIND RECRUITMENT)
문자열을 쪼개는 단위 l (1개 ~ 문자열 s의 절반)
에 따라 탐색한다.
l
칸씩 step을 뛰어서 split[]
에 쪼갠 문자열을 저장한 뒤 해당 문자열을 tmp
에 압축한다.
압축 결과tmp
가 기존res
보다 더 짧으면 갱신한다.
def solution(s):
res = s
for l in range(1, len(s)//2+1):
split = []
for i in range(0, len(s), l):
split.append(s[i:i+l])
cnt = 1
tmp = ''
for i in range(len(split)):
if i+1 < len(split) and split[i] == split[i+1]: cnt += 1
else:
if cnt == 1: tmp += split[i]
else:
tmp += str(cnt) + split[i]
cnt = 1
if len(tmp) < len(res):
res = tmp
return len(res)