ProblemSolving/Programmers

[프로그래머스] 압축 (Python, 파이썬)

적절 2023. 1. 24. 01:56
반응형

문제

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

 

프로그래머스

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

programmers.co.kr

 

접근 방법

파이썬의 딕셔너리를 이용하면 쉽게 풀 수 있다.

 

우선 A~Z까지를 딕셔너리에 등록한다.

이후 문자열을 읽어가며 현재 문자열에 추가하면서, in 연산자로 현재 문자열이 딕셔너리(dict)에 있는지 판단하고, 있으면 해당 색인 번호를 결과값에 추가한다.

없다면 len(dict) + 1의 새로운 색인 번호를 부여하고 현재 문자열을 빈 문자열로 초기화하고 다음 문자열을 계속 읽어나간다.

 

코드

def solution(msg):
    answer = []
    dict = {}
    
    for e in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        dict[e] = len(dict) + 1
    
    currentString = ""
    for i in range(len(msg)):
        currentString += msg[i]
        if i + 1 >= len(msg) or (currentString + msg[i + 1] not in dict):
            answer.append(dict[currentString])
            if i + 1 >= len(msg):
                dict[currentString] = len(dict) + 1
            else:
                dict[currentString + msg[i + 1]] = len(dict) + 1
            currentString = ""
    
    return answer

 

풀이 정보

시도 횟수: 1회

총 문제 풀이에 걸린 시간: 12분 10초

 

반응형