본문 바로가기

CodingTest/Level2

[연습] 코딩테스트 - 3차 압축

코딩테스트연습
2018 KAKAO BLIND RECRUITMENT


LZW 압축 구현하기


def solution(msg):
    msg = msg.lower()
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    alpha_dict = {i+1:x for i, x in enumerate(alphabet)}

    key_num = 27

    result = []
    p_cnt = 0
    t_cnt = 1
    c = 0
    while p_cnt <= len(msg):
        if msg[p_cnt:t_cnt] in list(alpha_dict.values()):
            t_cnt += 1
            if t_cnt > len(msg):
                result.append(list(alpha_dict.values()).index(msg[p_cnt:t_cnt-1])+1)
                break
            c += 1
        else:
            result.append(list(alpha_dict.values()).index(msg[p_cnt:t_cnt-1])+1)
            alpha_dict[key_num] = msg[p_cnt:t_cnt]
            key_num += 1
            p_cnt = c
            t_cnt = c+1        
    return result
반응형