728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17684
💡 문제 풀이
일반적인 구현 문제이다.
문제를 두 파트로 나누어 풀었다.
dict에 있으면 정답에 append 하는 파트, dict에 없으면 dict에 append 하는 파트'
정답에 append 하는 파트에서는 현재 dict에 있는 최대 길이부터 문자열을 확인하고
해당 문자열이 있으면 정답 리스트에 담아준다.
dict에 append 하는 파트에서는 리스트에 담아준 문자열을 가져와서 다음 문자열을 하나하나 추가하면서 비교한다.
dict에 없다면 담아주고 임시 문자열을 초기화해준다.
✔️ 느낀 점
의사 코드 그대로 따라가서 코드를 짜고 바로 통과했는데 돌이켜보니까 코드가 엄청나게 지저분하다..
💻 코드
def solution(msg):
ans = []
dict = {}
for idx, ch in enumerate("ABCDEFGHIJKLMNOPQRSTUVWXYZ", start=1):
dict[ch] = idx
tmp = ''
maxLen = 1
i = 0
while i < len(msg):
for j in range(i+maxLen, i-1, -1):
tmp = msg[i:j]
if tmp in dict:
i = j
ans.append(dict[tmp])
break
for k in range(j, len(msg)):
tmp += msg[k]
if tmp not in dict:
maxLen = max(maxLen, len(tmp))
idx += 1
dict[tmp] = idx
tmp = ''
break
return ans
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[Python] 프로그래머스 : 호텔 방 배정 (0) | 2022.10.19 |
---|---|
[Python] 프로그래머스 : 기지국 설치 (0) | 2022.10.09 |
[Python] 프로그래머스 : [1차] 셔틀 버스 (0) | 2022.10.03 |
[Python] 프로그래머스 : 다단계 칫솔 판매 (0) | 2022.09.29 |
[Python] 프로그래머스 : 두 개 뽑아서 더하기 (2) | 2022.07.06 |
댓글