코테 준비/구현

[프로그래머스] 3차 압축 (LZW 알고리즘)

imsmile2000 2023. 1. 26. 03:25
from string import ascii_uppercase
def solution(msg):
    answer=[]
    alphabet = {}
    for i in range(len(ascii_uppercase)):
	    alphabet[ascii_uppercase[i]] = i+1 #알파벳 만들기
    k=0 #start
    i=len(msg) #end
    while True:
        if msg[k:i] in alphabet:
            answer.append(alphabet[msg[k:i]])
            if i>=len(msg):
                return answer # while 문 종료
            alphabet[msg[k:i+1]]=len(alphabet)+1
            k+=len(msg[k:i])
            i=len(msg)
        else: #이미 알파벳에 있으면 
            i-=1 #end 길이 -1