from collections import deque def dictionary() : dic = {} for i in range(1, 27) : dic[chr(64+i)] = i return dic def solution(msg): dic = dictionary() idx = [] msg = deque(msg) last = 26 w = msg.popleft() d = True while msg : c = msg.popleft() if w+c in dic : while True : w = w+c try : c = msg.popleft() except : d = False break if w+c not in dic : break last += 1 dic[w+c] = last idx.append(dic[w]) w = c if d : idx.append(dic[w]) return idx
풀이
1) 알파벳 사전 만들기
def dictionary() : dic = {} for i in range(1, 27) : dic[chr(64+i)] = i return dic
2) 메인 함수
def solution(msg): dic = dictionary() idx = [] msg = deque(msg) last = 26 w = msg.popleft() d = True while msg : c = msg.popleft() if w+c in dic : while True : w = w+c try : c = msg.popleft() except : d = False break if w+c not in dic : break last += 1 dic[w+c] = last idx.append(dic[w]) w = c if d : idx.append(dic[w]) return idx
1. 들어오는 글자에서 두 개씩 뽑아 두 글자를 합쳤을 때, 그 글자가 사전에 있다면 한 글자를 더 가져와서 사전에 있는지 확인한다.
- 예) w = 'K', c = 'A' 인데, 'KA'가 사전에 있다면 'KAK'가 사전에 있는지 확인한다.
2. 합친 글자가 사전에 없다면 사전에 추가해주고, 해당 색인 번호를 idx 리스트
에 추가해준다.
또한 다음 글자를 위해 c
를 w
로 대체해준다.
3. 마지막 남은 글자가 한글자일경우 --> d
가 True
인 경우.
바로 윗줄에서 c
를 w
로 대체해주었으니 w
의 색인번호를 idx리스트
에 추가해준다.
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 네트워크 (0) | 2021.06.20 |
---|---|
[Python] 소수 찾기 (0) | 2021.06.18 |
[Python] 방금 그 곡 (0) | 2021.06.14 |
[Python] 캐시 (0) | 2021.06.13 |
[Python] 이진 변환 반복하기 (0) | 2021.06.13 |