본문 바로가기
알고리즘/프로그래머스

[Python] 프로그래머스 압축

by 컴공맨 2021. 4. 25.
 

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

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

programmers.co.kr


풀이

우선 문제의 조건대로 길이가 1인 즉, 'A' ~ 'Z'까지 색인을 만들고 msg를 한 글자씩 temp에 추가하면서 만약 temp의 색인이 안 만들었다면 temp - 1까지는 색인이 있는 것이므로 정답에 temp - 1의 색인을 추가하고 temp의 색인을 추가하게 하여 해결했습니다.

이때, flag를 통해 마지막문자의 색인이 안 만들어져 있다면 temp - 1의 색인을 정답에 추가하고 색인이 만들어져 있다면 temp를 정답에 추가하게 했습니다.


코드

def solution(msg):
    answer = []

    dictionary = dict()
    for i in range(ord('A'), ord('Z') + 1):
        dictionary[chr(i)] = i - ord('A') + 1

    idx = 0
    msg_len = len(msg)
    while idx < msg_len:
        temp = ""
        flag = False
        for idx in range(idx, len(msg)):
            temp += msg[idx]

            if temp not in dictionary:
                flag = True
                break

        if flag:
            dictionary[temp] = len(dictionary) + 1
            answer.append(dictionary[temp[:-1]])
        else:
            answer.append(dictionary[temp])
            break

    return answer

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com