[Programmers] P17684 압축
[Programmers] P17684 압축
Question
Language: Python
- 사전 dictionary를 하나 준비한다.
- 문자열을 앞에서부터 조사해서 사전에 들어있는 가장 긴 문자열 w 을 찾아낸다.
- 해당 문자열에 대한 인덱스를 answer list에 추가한다.
- 해당 단계에서 처리 되지 않은 문자 c에 대해 문자열 w+c를 dictionary에 추가한다.
- 문자 c 부터 다시 2번의 과정을 이어나간다.
Solution
def solution(msg):
answer = []
#1
dictionary={k:v for (k,v) in zip(alphabet, list(range(1,27)))}
index=27
i,j=0,0
while i< len(msg):
temp=msg[i]
j=i+1
#2
while j < len(msg):
temp+=msg[j]
if temp not in dictionary:
break
j+=1
#마지막 문자인 경우 더 이상 검색할 문자가 남지 않아서 해당 인덱스 값을 바로 출력해준다.
if j==len(msg):
answer.append(dictionary[temp])
break
else:
i=j
#4 w+c
dictionary[temp]=index
index+=1
temp=temp[:-1]
#3 w (위의 temp=temp[:-1]을 통해 문자 c를 제거한다.
answer.append(dictionary[temp])
return answer
댓글남기기