알고리즘/프로그래머스문제풀이

[Python/프로그래머스]압축_구현

개발자 덕구🐾 2022. 10. 20. 13:50
728x90

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

W : 비교할 문자열의 첫 인덱스 

C : 비교할 문자열의 끝 인덱스 

 

 

만약 있다면 while True 이기 때문에 다음으로 넘어간다. 

넘어가면 c+=1 으로 언젠가 dic에 없는 단어가 나올 수 밖에 없다. 

 

없는 단어가 나오면 dic에 추가하고 이전까지 있었던 문자열의 값을 dic에서 찾아 answer에 붙인다. 

w(시작 인덱스)를 끝 인덱스와 동일하게 해준다.

 

 

 

코드 :

def solution(msg):
    answer = []
    dic = {}
    
    # 알파벳 별로 인덱싱 
    for i in range(26) :
        dic[chr(i+65)] = i+1
    w,c = 0,0
    
    # c는 끝 인덱스 
    while True :
        c +=1 
        # 만약 끝났다면
        if c == len(msg) :
            answer.append(dic[msg[w:c]])
            break 
        # 끝이 아닌데 없다면?
        if msg[w:c+1]  not in dic :
            # 추가 
            dic[msg[w:c+1]] = len(dic)+1 
            answer.append(dic[msg[w:c]])
            # 시작 인덱스를 변경 
            w = c 
    return answer

 

 

반응형