https://programmers.co.kr/learn/courses/30/lessons/17684?language=python3
코딩테스트 연습 - [3차] 압축
TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]
programmers.co.kr
def solution(msg):
answer = []
word = [0,"A","B","C","D","E","F","G","H","I","J","K","L",
"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
idx = 0
while True:
count = 0
for i in range(idx,len(msg)):
if msg[idx:len(msg)-count] in word:
num=word.index(msg[idx:len(msg)-count])
if msg[idx:len(msg)-count+1] != '' or word.append(msg[idx:len(msg)-count+1]) not in word:
word.append(msg[idx:len(msg)-count+1])
idx += len(msg[idx:len(msg)-count])
answer.append(num)
count +=1
if idx == len(msg):
break
return answer
조금 더럽게 풀었는데 문제에 주어진 조건대로 구현했다..허허
- 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다.
- 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다.
- w에 해당하는 사전의 색인 번호를 출력하고, 입력에서 w를 제거한다.
- 입력에서 처리되지 않은 다음 글자가 남아있다면(c), w+c에 해당하는 단어를 사전에 등록한다.
- 단계 2로 돌아간다.
이 조건 순서 대로 한건데 잘 해석해보면 될거다.
문제는 구현이었던거 같다.
다른 사람들 풀이를 조금 참고해야겠다.
반응형
'코딩 > 프로그래머스 lv2' 카테고리의 다른 글
[프로그래머스] 조이스틱 - 파이썬 (0) | 2022.04.10 |
---|---|
[프로그래머스] 네트워크 - 파이썬 (0) | 2022.04.07 |
[프로그래머스] 후보키 - 파이썬 (0) | 2022.03.23 |
[프로그래머스] k진수에서 소수 개수 구하기 - 파이썬 (0) | 2022.03.22 |
[프로그래머스] 주차 요금 계산 - 파이썬 (0) | 2022.03.21 |