def solution(msg):
key = [chr(ord('A')+i-1) for i in range(1, 27)]
data = {k : ord(k)-ord('A')+1 for k in key}
result = []
idx = 0
while idx < len(msg):
if idx == len(msg)-1:
result.append(data[msg[idx]])
break
d_key = data.keys()
l = 1
while msg[idx:idx+l] in d_key: #이렇게 안써도 그냥 in data 썼어도 알아듣는다. 파이썬은 신이야...
if idx+l == len(msg)+1: break
l += 1
result.append(data[msg[idx:idx+l-1]])
data[msg[idx:idx+l]] = len(data)+1
idx = idx + l - 1
return result
그냥 문제에서 원하는 그대로 구현해주면 풀린다. 딱히 얻어갈것은 없는 문제였고, 그냥 하다보면 풀린다 ㅎㅎ
다만 내 구현 방식이 좀 지저분한 감이 있는 것 같아서, 제출 후 다른 분들이 푼 풀이를 참고해 보았지만 비슷비슷했다. (다른 분들의 풀이가 지저분하다는 건 아니고... 문제 자체가 그냥 좀 지저분한것 같았다.)