-
[2018 KAKAO BLIND RECRUITMENT] [3차] 압축알고리즘/프로그래머스 2021. 8. 22. 09:32
https://programmers.co.kr/learn/courses/30/lessons/17684
- 풀이
1. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다.
- 리스트 d에 초기화사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다.
- 사전의 뒤에서 부터 검색하며, re.match로 w를 찾는다. (뒤에서부터 검색해야 가장 길게 일치하는 것이 찾아진다.)2. w에 해당하는 사전의 색인 번호를 출력하고, 입력에서 w를 제거한다.
- 사전의 색인번호를 answer에 추가, 사전의 색인번호는 1부터 시작하므로, i+1을 해준다.
- msg에서 w만큼을 제거해준다.3. 입력에서 처리되지 않은 다음 글자가 남아있다면(c), w+c에 해당하는 단어를 사전에 등록한다.
4. 단계 2로 돌아간다.
- 만약 남은 문자가 없으면, 종료re.match(패턴, 문자열, 플래그) : 문자열의 처음부터 시작해서 작성한 패턴이 일치하는지 확인한다.
re.match("KA", "KAKAO").group() : "KA"를 반환한다.
# 문자열의 처음부터 일치하는지 확인하므로, 패턴"AKA" 등은 일치 X
RE모듈 : https://doraeul19.tistory.com/79
import re def solution(msg): answer = [] d = ['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'] while True: for i in range(len(d)-1, -1, -1): #뒤에서 부터 검색 if re.match(d[i], msg): answer.append(i+1) w = re.match(d[i], msg).group() msg = msg[len(d[i]):] if len(msg) > 0: d.append(w+msg[0]) break if len(msg) == 0: break return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[위클리 챌린지] 1주차 (0) 2021.08.24 [2021 KAKAO BLIND RECRUITMENT] 순위 검색 (0) 2021.08.23 [2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 (0) 2021.08.20 [2020 카카오 인턴십] 보석 쇼핑 (0) 2021.08.17 [2020 카카오 인턴십] 수식 최대화 (0) 2021.08.16