문제

문제

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

 

처음 작성한 코드

def solution(msg):
    di = dict()
    answer = []
    k = 26
   	for i in range(k):
        di[chr(65+i)] = i+1
    i = 0
    while True:
        tmp = ''
        for j in range(i,len(msg)):
            if msg[i:j+1] in di.keys():
                tmp = msg[i:j+1]
            else:
                di[msg[i:j+1]] = k+1
                k+=1
                answer.append(di[tmp])
                i += len(tmp)
                break
        else:
            answer.append(di[tmp])
            break
    return answer

 

코드 리뷰 후

def solution(msg):
    answer = []
    k = 26
    di = {chr(65+i):i+1 for i in range(k)}
    i = 0
    while True:
        tmp = ''
        for j in range(i,len(msg)):
            if msg[i:j+1] in di.keys():
                tmp = msg[i:j+1]
            else:
                di[msg[i:j+1]] = k+1
                k+=1
                answer.append(di[tmp])
                i += len(tmp)
                break
        else:
            answer.append(di[tmp])
            break
    return answer

 

깨달은 점

  • dictionary도 리스트 초기화하듯 초기화할 수 있다.
  • 2단계치고 쉽길래 풀었는데 역시나 점수가 2점인 쉬운 문제였다~

'Programmers' 카테고리의 다른 글

[프로그래머스] 수식 최대화  (0) 2021.01.25
[프로그래머스] 스킬트리  (0) 2021.01.23
[프로그래머스] 후보키  (0) 2021.01.22
[프로그래머스] 오픈채팅방  (0) 2021.01.19
[프로그래머스] 괄호 변환  (0) 2021.01.19