on my way

[프로그래머스 코딩테스트 연습] 압축 (Python3) 본문

algorithm/Python

[프로그래머스 코딩테스트 연습] 압축 (Python3)

wingbeat 2025. 1. 20. 03:12
반응형

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

반응형