본문 바로가기

알고리즘/프로그래머스

[프로그래머스][Python] 더 맵게

문제를 정리해보자.

 

모든 음식의 지수를 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))