문제
https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
해당 문제는 해시에 관한 문제이다.
이 문제는 정리를 잘하고 들어가는 것이 좋다.
조건은 다음과 같이 해석할 수 있다.
1. 길이가 1인 모든 단어를 포함한 사전을 초기화한다.
== 알파벳으로 dict 초기화하기
2. 가장 긴 문자열을 찾아서 색인번호 출력한다.
== for문을 돌면서 word를 dict에서 찾는다.
3. 색인 번호를 출력
== 해당 word를 dict에서 찾아서 출력한다.
4. 입력에서 처리되지 않은 글자가 있으면 등록한다.
== for문 돌 때 마지막으로 추가한 idx를 기억했다가 dict 등록하기
위와 같이 해석하여 풀이를 진행하였다.
정답코드
더보기
'''
'25. 10. 12.(일)
1. 길이가 1인 모든 단어를 포함한 사전을 초기화한다.
== 알파벳으로 dict 초기화
2. 가장 긴 문자열 찾는다?
3. 색인 번호를 출력, w 제거
4. 입력에서 처리되지 않은 글자가 있으면 w+c등록한다.
1. dict를 알파벳으로 초기화
2. 모든 문자열을 for문으로 돌면서
3. dict에 있으면서 최대 문자열을 찾는다.
4. 그 번호 출력한다. 해당 단어 제거
'''
def solution(msg):
answer = []
lzw = {}
for i in range(26):
lzw[chr(i + 65)] = i + 1
update_number = 27
#문자 하나하나 돌기
idx = 0
while idx < len(msg):
word = ''
catch_word = ''
next_idx = 0
for alpha in range(idx, len(msg)):
word += msg[alpha]
if word in lzw:
catch_word = word
next_idx = alpha + 1
idx = next_idx
if catch_word != '':
answer.append(lzw[catch_word])
if next_idx != len(msg):
lzw[catch_word + msg[next_idx]] = update_number
update_number += 1
return answer
깃허브 : https://buly.kr/HSY90OC
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / 스택 / 택배상자 (0) | 2025.10.14 |
|---|---|
| 프로그래머스 / DP / 땅따먹기 (0) | 2025.10.14 |
| 프로그래머스 / 구현, 정수론 / k진수에서 소수 개수 구하기 (0) | 2025.10.11 |
| 프로그래머스 / 스택 / 뒤에 있는 큰 수 (0) | 2025.10.05 |
| 프로그래머스 / 완전탐색 / 모음사전 (0) | 2025.10.01 |