[프로그래머스 LV2] 압축

Junyoung Park·2021년 12월 28일
0

코딩테스트

목록 보기
30/631

1. 문제 설명

압축

2. 문제 분석

시작 인덱스와 끝 인덱스를 통해 검사하고 있는 문자열의 범위(w-c)를 구한다. w~c는 딕셔너리에 존재하지 않으므로 이를 추가하고, w~c-1을 출력한다. 끝에 다다른 경우 현재 w~c-1을 출력하고 break, 답을 return한다.

  • 이 문제를 푸는 데 있어서 가장 헷갈린 대상은 다름 아니라 문자열의 인덱스였다. start와 end를 각각 구해서 범위를 체크하는 게 관건이었는데, 직관적인 1부터 시작하는 인덱스 조회와 프로그래밍 언어의 0부터 시작하는 인덱스 값이 코드를 짜는 데 서로 엉켰기 때문이다. 나중에 투 포인터도 이런 류의 인덱스 체크가 필수적인데, 꼼꼼히 점검하자!

3. 나의 풀이

import string
def solution(msg):
    words = {x: i + 1 for i, x in enumerate(string.ascii_uppercase)}
    printed = []
    words_cnt = 26
    start, end = 0, 0
    while True:
        if not words.get(msg[start:end+1]):
            words[msg[start:end+1]] = words_cnt + 1
            words_cnt += 1
            printed.append(words.get(msg[start:end]))
            start = end
        if end == len(msg):
            printed.append(words.get(msg[start:end]))
            break
        end += 1
    return printed
profile
JUST DO IT

0개의 댓글