반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
길이가 가장 긴 문자열을 찾기 위해 인덱스 두 개를 사용한다.
문자열의 시작 인덱스 start_idx와 문자열의 끝 인덱스 end_idx를 이용하고, end_idx의 값을 증가하면서 가장 긴 문자열을 찾는다.
msg[start_idx : end_idx]에 해당하는 문자열이 사전에서 못 찾을때까지 end_idx를 증가시키면 가장 긴 문자열을 찾을 수 있다.
그러면 사전에서 못 찾은 문자열이 나왔을 때 end_idx - 1 까지가 사전에서 찾을 수 있는 가장 긴 문자열이다.
이를 answer 리스트에 추가한다.
그리고 사전에서 못 찾은 문자열 msg[start_idx : end_idx]을 그대로 사전에 추가한다.
start_idx 부터 end_idx 까지의 문자열을 찾았으므로 다음은 end_idx 부터 찾아야한다.
그러므로 start_idx = end_idx를 해준다.
코드
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def solution(msg):
answer = []
word_dic = {}
for alphabet in range(ord('A'), ord('Z') + 1):
word_dic[chr(alphabet)] = len(word_dic) + 1
start_idx, end_idx = 0, 0
while end_idx != len(msg):
if msg[start_idx : end_idx + 1] not in word_dic:
answer.append(word_dic[msg[start_idx : end_idx]])
word_dic[msg[start_idx : end_idx + 1]] = len(word_dic) + 1
start_idx = end_idx
end_idx += 1
answer.append(word_dic[msg[start_idx : end_idx]])
return answer
|
cs |
반응형
'프로그래머스 > 미해결' 카테고리의 다른 글
프로그래머스 - 미로 탈출 (0) | 2024.03.10 |
---|---|
프로그래머스 - 다단계 칫솔 판매 (0) | 2024.03.04 |
프로그래머스 - 의상 (0) | 2024.02.22 |
프로그래머스 - 메뉴 리뉴얼 (1) | 2024.02.12 |
프로그래머스 - 베스트앨범 (1) | 2024.02.10 |