본문 바로가기
프로그래머스/2단계

(Python/LV2) 압축

by windy7271 2022. 9. 27.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

def solution(msg):
    res = []
    dic = {chr(i): i-64 for i in range(ord('A'),ord('Z')+1)}
    num = 27
    while msg:
        start = 1
        while msg[:start] in dic.keys() and start <= len(msg):
            start += 1
        res.append(dic[msg[:start -1]])
        dic[msg[:start]] = num
        num += 1

        msg = msg[start-1:]
    return res

 

힙을 사용했지만 조금 틀림

import heapq
def solution(scoville, K):
    count = 0
    heapq.heapify(scoville)
    while scoville[0] < K :
        heapq.heappush(scoville, heapq.heappop(scoville) + (heapq.heappop(scoville)*2))
        count += 1
    return -1 if len(scoville) == 1 or scoville[0] < K else count

 

 

import heapq
def solution(scoville, K):
    count = 0
    heapq.heapify(scoville)
    while scoville[0] < K :
        heapq.heappush(scoville, heapq.heappop(scoville) + (heapq.heappop(scoville)*2))
        count += 1
        if len(scoville) == 1 and scoville[0] < K :
            return -1
    return count

or 가 아니라 and 였고

-1 경우를 while 문 안에 넣었어야함

반응형

댓글