알고리즘 문제 풀이/프로그래머스
[프로그래머스] [3차] 압축 python (*)
부끄러엇피치
2022. 4. 28. 22:33
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
이는 많이 나오니까 알아두자.