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초
반응형