코딩테스트

[프로그래머스][KAKAO_BLIND][2018] 압축

pythaac 2021. 9. 3. 21:05
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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 without_longest_matched(msg, dic, crnt_num, answer):
    for i in range(1, len(msg)+1):
        if msg[:i] not in dic:
            w = msg[:i-1]
            c = msg[i-1]
            dic[w+c] = crnt_num
            answer.append(dic[w])
            without_longest_matched(msg[i-1:], dic, crnt_num+1, answer)
            return
    answer.append(dic[msg])
    return

def solution(msg):
    answer = []
    dic = defaultdict(int)
    for i in range(ord('A'), ord('Z') + 1):
        dic[chr(i)] = i - ord('A') + 1

    crnt_num = 27
    without_longest_matched(msg, dic, crnt_num, answer)

    return answer
  • 구현
    • LZW에 대한 설명 그대로 구현하면 된다

 

다른 사람이 작성한 코드

None

 

기억해야할 것

  • 처음에 설명을 제대로 안보고 어떻게 구현할지 고민을 많이 했는데, 설명에 잘 나와있었다
  • 문제를 꼼꼼히 읽자!