728x90

나의 풀이
from string import ascii_uppercase as alphabet
def solution(msg):
answer = []
dictionary = dict()
for n, l in enumerate(alphabet):
dictionary[l] = n + 1
while msg:
for i in range(len(msg), 0, -1):
if msg[:i] in dictionary:
answer.append(dictionary[msg[:i]])
if i < len(msg):
dictionary[msg[:i + 1]] = len(dictionary) + 1
msg = msg[i:]
break
return answer
- slicing에서 index error가 발생하지 않으니 'if i < len(msg):'는 생략 가능. (마지막이라 오류 일으킬 가능성 X)
다른 풀이 1
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
반응형
'Coding Test > Programmers' 카테고리의 다른 글
| [프로그래머스/파이썬] 올바른 괄호 (0) | 2022.06.20 |
|---|---|
| [프로그래머스/파이썬] [3차] 파이령 정렬 (0) | 2022.06.20 |
| [프로그래머스/파이썬] 가장 큰 정사각형 찾기 (0) | 2022.06.18 |
| [프로그래머스/파이썬] [3차] 방금그곡 (0) | 2022.06.18 |
| [프로그래머스/파이썬] 방문 길이 (0) | 2022.06.18 |