문제
해결 과정
- 먼저 사전을 만들어준다. =
dic
- while문을 사용하여 반복문을 돈다.
- 현재 글자와 다음 글자를 합친 것이
dic
에 없으면 추가해주고
anser
에 넣어준다. 그래고 현재 글자 위치를 다음 글자로 바꿔준다.
- 현재 글자와 다음 글자를 합친 것이
dic
에 있다면 다음 글자 + 1
- 현재 글자는 다음 글자 두 자리를 합친 것이
dic
에 있는지 확인
- 다음 글자가 마지막 글자라면
answer
에 넣어주고 break
시행착오
- 처음에 조건문을 하나씩.. 하려고 했다... 🙄
현재 글자 있는지? 현재 글자 + 다음 글자 있는지?
⏩ 하나의 조건만 비교하면 된다. = (현재 글자 + 다음 1개의 글자)가 사전에 있는지? 없다면 (현재 글자 + 다음 2개의 글자)가 있는지 ...
풀이
def solution(msg):
answer = []
dic = {}
for i in range(26):
dic[chr(65+i)] = i + 1
w,c = 0,0
while True:
c += 1
if c == len(msg):
answer.append(dic[msg[w:c]])
break
if msg[w:c+1] not in dic:
dic[msg[w:c+1]] = len(dic) + 1
answer.append(dic[msg[w:c]])
w = c
return answer