본문 바로가기

프로그래밍

[프로그래머스 더 맵게] 파이썬 풀이

[프로그래머스 더 맵게] 파이썬 풀이

문제

힙의 원소를 넣고 빼는 기본 문제

Keypoints

  • heapq library를 사용해야 한다.
  • 조건을 만족하면 힙의 원소를 빼기 전에 종료해야 한다.
    • 두 원소를 빼고 힙의 조건을 고려하면 만족하지 않았을 때 다시 집어넣어줘야 한다. 이러한 수고를 덜기 위해서 빼지 않은 상태에서 종료 조건의 일치여부를 판단한다.

Solution

from heapq import heapify, heappop, heappush

def solution(scoville, K):
    heapify(scoville) 
    count = 0 
    while  len(scoville)>1 :   # Require more than 1 element to shuffle
        if scoville[0] >= K:   # No reason to suffle
            break 
        a = heappop(scoville)
        b = heappop(scoville)

        count += 1
        heappush(scoville, a+b*2)   # Suffle

    if  scoville[0] < K :  # doesn't satisfy the condition
        return -1
    else:      
        return count

References

Problem Link