안녕하세요 :)
https://programmers.co.kr/learn/courses/30/lessons/17684
2018 KAKAO BLIND RECRUITMENT 에 출제되었던 압축 문제입니다.
풀이는 구현이라 문제 설명과 똑같이 W와 C를 만들어서 answer에 추가시켜주었습니다.
def solution(msg):
d = {}
for n in range(65, 91):
count = n - 64
d[chr(n)] = count
answer = []
i = 0
count = 26
while i < len(msg):
for j in range(i + 1, len(msg)+1):
w = msg[i:j]
if w in d:
if j >= len(msg):
answer.append(d[w])
i = j - 1
break
else:
c = msg[j]
if w + c not in d:
count += 1
answer.append(d[w])
d[w+c] = count
i = j - 1
break
else:
i += 1
count += 1
d[w] = count
answer.append(d[w])
break
i += 1
return answer