알고리즘/프로그래머스

[프로그래머스] Level2, 더 맵게 (Python)

wookcode 2021. 6. 10. 20:53
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3 

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

 

코드

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

sort()를 사용하여 풀려고 했으나 시간초과

heapq을 사용하면 따로 정렬을 해주지 않아도 최소힙으로 가장 작은값을 구할 수 있다.

 

리스트를 heapify를 이용해 heapq으로 바꿔준다.

heapq은 push pop을 할 때마다 자동으로 정렬을해준다.

 

마지막까지 K보다 작은 원소가 있다면 -1을 리턴한다.

반응형