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
최종 코드
GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음
프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.
github.com
from string import ascii_uppercase
from collections import defaultdict
def solution(msg):
answer = []
dic = defaultdict(int)
i = 0
for c in ascii_uppercase:
i += 1
dic[c] = i
start = 0
end = 0
while True:
word = msg[start:end+1]
if dic[word] > 0:
answer.append(dic[word])
end += 1
if end >= len(msg):
break
else:
i += 1
dic[word] = i
start += (end-start)
while True:
end += 1
if end >= len(msg) or dic[msg[start:end+1]] == 0:
end -= 1
break
return answer
풀이 과정
풀이 시간 52분
from string import ascii_uppercase
from collections import defaultdict
def solution(msg):
answer = []
#사전
dic = defaultdict(int)
#사전 인덱스
i = 0
#알파벳 대문자 사전에 추가
for c in ascii_uppercase:
i += 1
dic[c] = i
#단어의 시작 인덱스 start, 끝 인덱스 end
start = 0
end = 0
while True:
#현재 단어
word = msg[start:end+1]
#사전에 있는 단어인 경우,
if dic[word] > 0:
#사전 인덱스를 출력한다
answer.append(dic[word])
end += 1
#msg 문자열을 모두 탐색한 경우, 종료
if end >= len(msg):
break
#사전에 없는 단어인 경우,
else:
#1 증가시킨 사전 인덱스에 단어를 추가한다
i += 1
dic[word] = i
#처리한 단어 이후로 시작 인덱스를 갱신한다
start += (end-start)
#끝 인덱스를 찾는다
while True:
end += 1
#msg 문자열 인덱스를 초과하거나 사전에 있는 가장 긴 단어로 인덱스를 셋팅한다
if end >= len(msg) or dic[msg[start:end+1]] == 0:
end -= 1
break
return answer
#시간복잡도 = O(n^2), 공간복잡도 = O(n^2)
참고
- 1. N진수 게임 - 2022.03.30 - [코테 노트/프로그래머스] - Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3
Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/17687?language=python3 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여..
hwayomingdlog.tistory.com
- 3. 파일명 정렬 - https://hwayomingdlog.tistory.com/312
Level 2 [3차] 파일명 정렬 <2018 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/17686?language=python3 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히..
hwayomingdlog.tistory.com
Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/17683?language=python3 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때..
hwayomingdlog.tistory.com
- 5. 자동완성
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.30 |
---|---|
Level 2 [3차] 파일명 정렬 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.29 |
Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.25 |
Level 3 풍선 터트리기 Python 3 (0) | 2022.03.23 |
Level 3 공 이동 시뮬레이션 Python 3 (0) | 2022.03.22 |