풀이
우선 문제의 조건대로 길이가 1인 즉, 'A' ~ 'Z'까지 색인을 만들고 msg를 한 글자씩 temp에 추가하면서 만약 temp의 색인이 안 만들었다면 temp - 1까지는 색인이 있는 것이므로 정답에 temp - 1의 색인을 추가하고 temp의 색인을 추가하게 하여 해결했습니다.
이때, flag를 통해 마지막문자의 색인이 안 만들어져 있다면 temp - 1의 색인을 정답에 추가하고 색인이 만들어져 있다면 temp를 정답에 추가하게 했습니다.
코드
def solution(msg):
answer = []
dictionary = dict()
for i in range(ord('A'), ord('Z') + 1):
dictionary[chr(i)] = i - ord('A') + 1
idx = 0
msg_len = len(msg)
while idx < msg_len:
temp = ""
flag = False
for idx in range(idx, len(msg)):
temp += msg[idx]
if temp not in dictionary:
flag = True
break
if flag:
dictionary[temp] = len(dictionary) + 1
answer.append(dictionary[temp[:-1]])
else:
answer.append(dictionary[temp])
break
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 n진수 게임 (0) | 2021.05.01 |
---|---|
[Python] 프로그래머스 파일명 정렬 (0) | 2021.04.25 |
[Python] 프로그래머스 방금그곡 (0) | 2021.04.18 |
[Python] 프로그래머스 후보키 (0) | 2021.04.17 |
[Python] 프로그래머스 오픈채팅방 (0) | 2021.04.11 |