[Python] 프로그래머스 - 압축
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17684
# 전에 포스팅한 '방금그곡'과 같이 2018 카카오 블라인드 코딩테스트에 출제된 문제이다.
생각한 아이디어대로 짜봤는데 바로 통과되어서 놀랐다.
# 4번째 줄처럼 dic을 선언하는 방식을 알게 되었고, 다른 사람들의 풀이를 보니
zip함수를 사용해 아래와 같이 선언하는 방법도 있다는 것도 알게 되었다.
" dic= dict(zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ", range(1, 27))) "
def solution(msg):
answer = []
# 알파벳 단어에 해당하는 색인번호 dic생성
dic = {chr(i + 64): i for i in range(1, 27)}
cnt = 27
i = 0
search = ''
# i가 msg길이에 해당하는 값까지 증가되면 break
while i < len(msg):
# search에 한글자씩(msg[i]) 더한다.
search += msg[i]
# 한 글자씩 더하면서 찾으려는 단어가 이미 dic에 있다면 i인덱스 1증가, continue
if search in dic:
i += 1
continue
# 단어가 dic에 없으면 dic에 단어 추가 (색인번호는 27부터 1씩 증가해야하므로 cnt 1증가)
else:
dic[search] = cnt
cnt += 1
# 마지막 글자를 제외한 단어는 사전에 있으므로 그 단어에 해당하는 색인번호 answer에 append
s = search[:-1]
answer.append(dic[s])
# search = ''로 초기화
search = ''
# search에 마지막 글자 남아있으니 마지막 글자의 색인번호 answer에 append
answer.append(dic[search])
return answer
(프로그래머스 level: 2)
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - n진수 게임 (0) | 2021.05.22 |
---|---|
[Python] 프로그래머스 - 파일명 정렬 (0) | 2021.05.22 |
[Python] 프로그래머스 - 방금그곡 (0) | 2021.05.20 |
[Python] 프로그래머스 - 영어 끝말잇기 (0) | 2021.05.16 |
[Python] 프로그래머스 - 예상 대진표 (0) | 2021.05.16 |
TAGS.