728x90
https://programmers.co.kr/learn/courses/30/lessons/17684
def solution(msg):
answer = []
# 1 사전 초기화
dic = dict(zip(map(chr, range(ord('A'), ord('Z') + 1)), range(1, 27)))
msg_index, dic_index = 0, 27
while msg_index < len(msg):
# 2 가장 긴 문자열 검색
tmp_ind = 1
while msg_index + tmp_ind <= len(msg) and dic.get(msg[msg_index:msg_index + tmp_ind]):
tmp_ind += 1
# 3 w에 해당하는 사전의 색인 번호를 출력
answer.append(dic[msg[msg_index:msg_index + tmp_ind - 1]])
# 4 다음글자 남아있으면 단어를 사전에 등록
if not dic.get(msg[msg_index:msg_index + tmp_ind]):
dic[msg[msg_index:msg_index + tmp_ind]] = dic_index
dic_index += 1
# 5 2반복
msg_index += tmp_ind - 1
return answer
구현만 하면 되는 문제이다.
dic이라는 사전에 A부터 Z까지 하나씩 할당해놓고 조건에 맞게 계속 추가하면 된다.
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] 스킬트리, python (0) | 2021.06.26 |
---|---|
[프로그래머스] [3차] 방금그곡, 2018 KAKAO BLIND RECRUITMENT, python (0) | 2021.06.26 |
[프로그래머스] 2개 이하로 다른 비트,월간 코드 챌린지 시즌2, python, C (0) | 2021.06.25 |
[프로그래머스] 영어 끝말잇기, Summer/Winter Coding(~2018), python (0) | 2021.06.25 |
[프로그래머스] 배달, Summer/Winter Coding(~2018), python (0) | 2021.06.23 |