시작 인덱스와 끝 인덱스를 통해 검사하고 있는 문자열의 범위(w-c)를 구한다. w~c는 딕셔너리에 존재하지 않으므로 이를 추가하고, w~c-1을 출력한다. 끝에 다다른 경우 현재 w~c-1을 출력하고 break, 답을 return한다.
import string
def solution(msg):
words = {x: i + 1 for i, x in enumerate(string.ascii_uppercase)}
printed = []
words_cnt = 26
start, end = 0, 0
while True:
if not words.get(msg[start:end+1]):
words[msg[start:end+1]] = words_cnt + 1
words_cnt += 1
printed.append(words.get(msg[start:end]))
start = end
if end == len(msg):
printed.append(words.get(msg[start:end]))
break
end += 1
return printed