본문 바로가기
Programming/Programmers

[프로그래머스] 압축 (Python)

by 데이터현 2021. 11. 6.

https://programmers.co.kr/learn/courses/30/lessons/17684

 

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

TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]

programmers.co.kr

 

주어진 조건대로 구현하면 된다.

from collections import defaultdict
def solution(msg):
    alphabet ='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    answer = []
    dict = defaultdict(int)
    for i,alpha in enumerate(alphabet):
        dict[alpha] = i+1
    start, end, value = 0,2,27

    def search(msg,start,end,dict,answer,value):
        key = msg[start:end]
        word = msg[start:end-1]
        if dict[key] == 0: # 키가 없을 때
            dict[key] = value
            value += 1
            answer.append(dict[word])
        elif end>len(msg): # 해당 키가 있을 때
            answer.append(dict[key])
        else:
            return search(msg,start,end+1,dict,answer,value)
        return end-1, end+1 , answer , value


    while start < len(msg):
        start , end, answer, value = search(msg,start,end,dict,answer,value)
    return answer

댓글