[프로그래머스] [3차] 압축

yunu·2022년 3월 4일
0
post-thumbnail

출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] [3차] 압축

풀이

1. chr(숫자)으로 단어와 색인번호에 해단하는 해시를 만든다.
2. 현재입력이 마지막 한 글자일때 다음글자는 없기 때문에 현재글자와 다음글자가 같아지는 오류가 있어 msg 마지막에 @을 넣어서 이런 경우를 막았다.
3. 해시에 현재 입력 글자가 존재할 때까지 반복하여 존재하지 않기 직전까지 구하고 만약 더 글자가 길어졌다면 길어진 만큼 i을 더하여 건너뛴다.

코드

def solution(msg):
    dict, last = {chr(65 + i) : i + 1 for i in range(26)}, 26
    answer = []
    i, n = 0, len(msg)
    msg += '@'
    while i < n:
        w, j = msg[i], 2
        c = msg[i:i + j]
        while c in dict:
            j += 1
            w, c = c, msg[i:i + j]
        dict[c] = last + 1
        last += 1
        i += j - 1
        answer.append(dict[w])

    return answer

느낀점

카카오 문제는 레벨2도 어렵다고 느꼈는데 이번 문제는 비교적 착해서 놀랐다.

profile
rip

0개의 댓글