[프로그래머스] 힙(Heap) - 더 맵게 (Python)

[프로그래머스] 힙(Heap) - 더 맵게

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import heapq

def solution(scoville, K):
    heapq.heapify(scoville)
    cnt = 0

    while scoville[0] < K:
        if len(scoville) == 1:
            return -1
        cnt += 1
        first = heapq.heappop(scoville)
        second = heapq.heappop(scoville)
        heapq.heappush(scoville, first + second * 2)

    return cnt

처음에 문제를 풀었을 때 정확성 테스트는 통과하지만 효율성 테스트에서 시간초과 문제가 발생했었는데, 이는 heapq로 구현하는 것을 통해 해결할 수 있었다.


📌 파이썬의 heapq 모듈은 최소 힙 자료구조를 제공함

  • heapq.heapify(list) : 기존의 list를 힙으로 변환 (인덱스 0번에 최솟값이 위치함)
  • heapq.heappop(list) : list의 가장 작은 값 삭제 후, 그 값을 리턴
  • heapq.heappush(list, number) : 힙에 원소(number) 추가