문제
https://school.programmers.co.kr/learn/courses/30/lessons/17684
풀이
먼저 딕셔너리를 이용하여 사전 tmp를 만들었다. chr을 사용하여 정수를 유니코드 문자('A' to 'Z')로 변환하였다.
사전에 존재하는 가장 긴 문자열의 마지막 인덱스(tt - 1)를 구하였다.
그리고 answer 배열과 사전을 갱신하였다.
msg가 빈 문자열이 되면 반복문이 멈추도록 하였다.
def solution(msg):
answer = []
tmp = {chr(e + 64): e for e in range(1, 27)}
num = 27
while msg:
tt = 1
while msg[:tt] in tmp.keys() and tt <= msg.__len__():
tt += 1
tt -= 1
if msg[:tt] in tmp.keys():
answer.append(tmp[msg[:tt]])
tmp[msg[:tt + 1]] = num
num += 1
msg = msg[tt:]
return answer
총평
너무 어려워서 다른 풀이를 보고 공부하였다. 반드시 다음에 또 풀어봐야 할 문제이다.
"코테 왕도가 되려면 나는 아직 멀었어!"
'알고리즘 > 카카오 EASY' 카테고리의 다른 글
파일명 정렬 (Level 2) (0) | 2022.07.25 |
---|---|
방금그곡 (Level 2) (0) | 2022.07.25 |
다트 게임 (Level 1) (0) | 2022.07.11 |
비밀지도 (Level 1) (0) | 2022.07.11 |
캐시 (Level 2) (0) | 2022.07.08 |