🤔 문제
https://programmers.co.kr/learn/courses/30/lessons/17684
😀 풀이
위 문제는 아래 사진과 같은 조건을 따라 그대로 구현하면 되는 문제입니다. 1 ~ 5번 과정이 각각 풀이 코드의 라인 한 개씩과 매칭되어 따로 문제 풀이과정을 설명하지 않고 해당 과정을 구현한 부분에 주석을 남겨놨습니다.
추가로 findLongestWord라는 재귀함수를 만들었는데 테스트케이스에서 recursionlimit으로 인한 런타임 에러가 발생하여 1,2번 라인에 관련 코드를 추가해주었습니다.
💻 풀이 코드는 아래와 같습니다.
import sys
sys.setrecursionlimit(int(1e9))
# 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다.
index = {chr(ord('A') + i) : i + 1 for i in range(26)}
def findLongestWord(w):
if w in index:
return w
return findLongestWord(w[:-1])
def solution(msg):
answer = []
while msg:
w = findLongestWord(msg) # 현재 입력과 일치하는 가장 긴문자열 w를 찾는다.
answer.append(index[w]) # w에 해당하는 사전의 색인 번호를 출력하고,
msg = msg[len(w):] # 입력에서 w를 제거한다.
if msg: # 입력에서 처리되지 않은 다음 글자가 남아있다면(c), w+c에 해당하는 단어를 사전에 등록한다.
index[w + msg[0]] = len(index) + 1
return answer
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보석 쇼핑 - Python (2) | 2022.01.29 |
---|---|
[프로그래머스] [3차] 방금그곡 - Python (0) | 2022.01.28 |
[프로그래머스] 표 편집 - Python (1) | 2022.01.21 |
[프로그래머스] 양궁대회 - Python (1) | 2022.01.21 |
[프로그래머스] 신고 결과 받기 - Python (0) | 2022.01.18 |