본문 바로가기

알고리즘/카카오 EASY

압축 (Level 2)

문제

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

 

먼저 딕셔너리를 이용하여 사전 tmp를 만들었다. chr을 사용하여 정수를 유니코드 문자('A' to 'Z')로 변환하였다. 

 

사전에 존재하는 가장 긴 문자열의 마지막 인덱스(tt - 1)를 구하였다.

그리고 answer 배열과 사전을 갱신하였다.

 

msg가 빈 문자열이 되면 반복문이 멈추도록 하였다.

 

def solution(msg):
    answer = []
    tmp = {chr(e + 64): e for e in range(1, 27)}
    num = 27
    while msg:
        tt = 1
        while msg[:tt] in tmp.keys() and tt <= msg.__len__():
            tt += 1
        tt -= 1
        if msg[:tt] in tmp.keys():
            answer.append(tmp[msg[:tt]])
            tmp[msg[:tt + 1]] = num
            num += 1
        msg = msg[tt:]
    
    return answer

 

총평

너무 어려워서 다른 풀이를 보고 공부하였다. 반드시 다음에 또 풀어봐야 할 문제이다. 

"코테 왕도가 되려면 나는 아직 멀었어!"

'알고리즘 > 카카오 EASY' 카테고리의 다른 글

파일명 정렬 (Level 2)  (0) 2022.07.25
방금그곡 (Level 2)  (0) 2022.07.25
다트 게임 (Level 1)  (0) 2022.07.11
비밀지도 (Level 1)  (0) 2022.07.11
캐시 (Level 2)  (0) 2022.07.08