728x90

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):
    answer = []
    dic = dict()
    for i in range(ord('A'), ord('Z')+1):
        dic[chr(i)] = i - ord('A') + 1
    start, end = 0, 1
    print(dic)
    idx = 27 # dic 처음의 다음 인덱스
    
    while end < len(msg)+1:
        w = msg[start:end]
        if w in dic:
            end += 1
        else:
            answer.append(dic[w[:-1]])
            dic[w] = idx # 인덱스 삽입
            idx += 1
            start = end -1   
    answer.append(dic[w])
    return answer

풀이

영어 대문자 문자열로 조건에 맞게 비교하며 슬라이싱하는 문제이다.

슬라이싱 인덱싱이 조금 헷갈린다..

 

알파벳에 맞는 색인 문자를 같이 입력해야하니까

알파벳 사전을 dict() 으로 구현한다.

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

이는 많이 나오니까 알아두자.

 

+ Recent posts