- 문제 : 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
'코딩테스트 > 기출' 카테고리의 다른 글
[Summer/Winter Coding(~2018)/ 프로그래머스] 49993번 : 스킬트리 (0) | 2022.09.23 |
---|---|
[연습문제 / 프로그래머스] 12913번 : 땅따먹기 (0) | 2022.09.21 |
[2018 KAKAO BLIND RECRUITMENT/ 프로그래머스] : [3차] n진수 게임 (0) | 2022.09.21 |
[dfs, bfs / 프로그래머스] 43175번 : 타겟 넘버 (0) | 2022.09.20 |
[ 2022 KAKAO BLIND RECRUITMENT / 프로그래머스] 92335번 : k진수에서 소수 개수 구하기 (0) | 2022.09.20 |