프로그래밍
[프로그래머스 더 맵게] 파이썬 풀이
Rudi
2021. 2. 13. 09:47
[프로그래머스 더 맵게] 파이썬 풀이
문제
힙의 원소를 넣고 빼는 기본 문제
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