[PS, Algorithm] - 압축 (코딩테스트 연습, LEVEL 2)

조재현·2022년 12월 27일
0

📒문제



🎈풀이

def solution(msg):
    key = [chr(ord('A')+i-1) for i in range(1, 27)]
    data = {k : ord(k)-ord('A')+1 for k in key}
    
    result = []
    idx = 0
    
    while idx < len(msg):
        if idx == len(msg)-1:
            result.append(data[msg[idx]])
            break
            
        d_key = data.keys() 
        l = 1
        
        while msg[idx:idx+l] in d_key: #이렇게 안써도 그냥 in data 썼어도 알아듣는다. 파이썬은 신이야...
            if idx+l == len(msg)+1: break
            l += 1
        
        result.append(data[msg[idx:idx+l-1]])
        data[msg[idx:idx+l]] = len(data)+1

        idx = idx + l - 1
    
    return result

그냥 문제에서 원하는 그대로 구현해주면 풀린다. 딱히 얻어갈것은 없는 문제였고, 그냥 하다보면 풀린다 ㅎㅎ

다만 내 구현 방식이 좀 지저분한 감이 있는 것 같아서, 제출 후 다른 분들이 푼 풀이를 참고해 보았지만 비슷비슷했다. (다른 분들의 풀이가 지저분하다는 건 아니고... 문제 자체가 그냥 좀 지저분한것 같았다.)

profile
꿈이 많은 개발자 지망생

0개의 댓글