- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

Lv2 문제이고, 스스로 푼 문제다!

 

문제 이해

alphabet을 사전처럼 이용하는데 이 사전에 해당 문자가 있을 때까지 진행해야한다고 생각했다.

answer에는 사전에 존재하는 문자열의 인덱스 번호를 누적한다

now는 시작 문자 또는 문자열을 가리킨다 

 

1. 사전에 없는 문자가 나오면 그 전 문자의 사전번호를 answer에 추가하고, 사전에 그 새로운 문자를 추가한 뒤

2. 마지막 문자를 기준으로 다시 시작한다. (now = nx)

3. 위의 과정으로 진행하면 사전에서 가장 마지막 문자열은 카운트되지 못하고 끝나기 때문에 now 문자의 인덱스를 alphabet에서 가져와 answer에 추가해준다 

 

- 정답 풀이 : 

def solution(msg):
    alphabet = [0, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    #사전에 있는 문자까지 진행하고, 그 단어의 인덱스 answer에 추가, 없는 문자열에서 멈추고 사전에 등록     
    answer = []
    msg = list(msg)
    now = msg.pop(0)
   
    while msg:
        nx = msg.pop(0)       
        current = now + nx
        if current not in alphabet:
            alphabet.append(current)
            answer.append(alphabet.index(now))
            now = nx             
        else: # current in alphabet
            now = current
            
    #마지막 남은 문자는 반복문에서 연산되지 않으므로 따로 해당 문자의 인덱스를 answer에 추가해준다
    if now != 0:
        answer.append(alphabet.index(now))
        
    return answer

+ Recent posts