문제를 정리해보자.
모든 음식의 지수를 K이상으로 만들어야 한다.
하나라도 K이상이 아니라면, 2개의 음식을 섞어서 새로운 음식을 만든다.
새로운 음식 = 가장 맵지 않은 음식의 지수 + (두 번째로 맵지 않은 음식의 지수 X 2)
모든 음식의 지수가 K라면 그만한다.
음식이 1개 남았는데, K보다 작다면 -1을 출력한다.
Heap을 이용했다.
import heapq
def solution(scoville, K):
answer = 0
heap = []
for num in scoville:
heapq.heappush(heap, num)
check = heap[0]
while check < K:
if len(heap) < 2:
return -1
x = heapq.heappop(heap)
y = heapq.heappop(heap)
heapq.heappush(heap, min(x, y) + max(x, y) * 2)
answer += 1
check = heap[0]
return answer
print(solution([2, 3], 7))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] K번째수 (0) | 2021.11.26 |
---|---|
[프로그래머스][Python] 주식가격 (0) | 2021.11.25 |
[프로그래머스][Python] 다리를 지나는 트럭 (0) | 2021.11.24 |
[프로그래머스][Python] 프린터 (0) | 2021.11.10 |
[프로그래머스][Python] 기능개발 (0) | 2021.11.05 |