📖 2018 KAKA BLIND RECRUITMENT > [3차] 압축
📖What I thought
처음에는 lzw압축 자체를 이해를 못해서 ..ㅠㅠ 너무 어려웠는데 결국 lzw 압축 이해하고 그대로 구현만 하면 되는 문제!
📖풀이
📎구현
def solution(msg):
answer = []
lzw = {chr(a): i+1 for i, a in enumerate(range(65, 91))}
w, c = 0, 1
# msg[w:c]는 항상 사전에 존재
while True:
if c >= len(msg):
answer.append(lzw[msg[w:c]])
break
nxt = msg[w:c+1]
# 후보가 사전에 있음
if nxt in lzw:
c+=1 # 사전에 존재하는 가장 긴 문자열 찾아야하므로 더 뒤로 가!
# 후보가 사전에 없음
else:
answer.append(lzw[msg[w:c]])
lzw[msg[w:c+1]] = len(lzw) + 1
w = c
c = w + 1
return answer📖What I learned
- 오랜만에 아스키 코드!
chr(65)==‘A'기억하자 A-Z = 65-90