https://programmers.co.kr/learn/courses/30/lessons/17684
def solution(msg):
answer = []
dic = dict()
for i in range(1,27):
dic[chr(64+i)] = i
while msg:
w = ''
for i in range(len(msg)):
w += msg[i]
if w in dic:
if w == msg:
answer.append(dic[w])
return answer
continue
else:
answer.append(dic[w[:-1]])
dic[w] = len(dic) + 1
msg = msg[i:]
break
return answer
마지막 남은 문자열 처리법을 떠올리는데 시간을 많이 썼다.
key를 'A'~'Z', value를 1~26으로 하는 딕셔너리를 만든다.
앞으로 새로 만나는 문자열은 딕셔너리에 추가될 것이다.
입력이 msg = 'KAKAO'로 주어진다면
첫번째 'K'는 딕셔너리에 있다.
'K'다음 문자인 'A'를 같이 확인해보자.
'KA'는 딕셔너리에 없다. 'KA'= 27로 하여 딕셔너리에 추가한다.
딕셔너리에서 'K' 는 11 이다, 가져와 answer 에 넣는다.
(AKAO)
다음 'A'는 딕셔너리에 있다.
'A' 다음 문자인 'K'를 같이 확인해보자.
'AK'는 딕셔너리에 없다. 'KA' = 28 로 하여 딕셔너리에 추가한다.
딕셔너리에서 'A' 는 1 이다, 가져와 answer에 넣는다
(KAO)
다음 'K'는 딕셔너리에 있다.
'K' 다음 문자인 'A'를 같이 확인해보자.
'KA'는 딕셔너리에 있다.
'KA' 다음 문자인 'O'를 같이 확인해보자.
'KAO'는 딕셔너리에 없다. 'KAO' = 29로 하여 딕셔너리에 추가한다.
딕셔너리에서 'KA'는 27이다. answer에 넣는다.
(O)
다음 'O'는 딕셔너리에 있다.
이후 문자가 없으므로 딕셔너리에서 'O'의 값인 15를 answer에 넣는다.
answer = [11,1,27,15] 를 결과로 얻을 수 있다.