on my way
[프로그래머스 코딩테스트 연습] 압축 (Python3) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17684
def solution(msg):
d = {chr(i+65): i+1 for i in range(26)}
pos, idx = 0, 27
answer = []
while pos < len(msg):
w = msg[pos]
while pos+1 < len(msg) and w+msg[pos+1] in d:
pos += 1
w += msg[pos]
answer.append(d[w])
if pos+1 < len(msg):
d[w+msg[pos+1]] = idx
idx += 1
pos += 1
return answer
문자열을 순차적으로 처리하기 위해 위치를 나타내는 pos 변수를 두고
pos < len(msg)로 순차적으로 처리했다.
현재 입력과 일치하는 가장 긴 문자열 w를 찾기 위해
현재 w = msg[pos]
그리고 다음의 최대 문자열(pos+1<len(msg))이 사전에 있을때까지(w+msg[pos+1] in d), while문으로 pos += 1 해서 찾으며 현재 문자열 w를 확인
최대의 문자열을 answer에 추가
작업 후에, 현재 문자열과 그 다음의 문자열을 더해서 사전 d에 추가한다. idx += 1
작업이 끝나면 다음 위치부터 찾기 시작 pos += 1
반응형
'algorithm > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 괄호 회전하기 (Python3) (0) | 2025.01.20 |
---|---|
[백준 1874번] 스택 수열 (Python3, 실버4) (0) | 2025.01.20 |
[프로그래머스 코딩테스트 연습] 귤 고르기 (Python3) (0) | 2025.01.16 |
[프로그래머스 코딩테스트 연습] 베스트 앨범 (Python3) (0) | 2025.01.16 |
[프로그래머스 코딩테스트 연습] 전화번호 목록 (Python3) (0) | 2025.01.15 |