- 우선 모든 요소를 최소 히프에 넣어 준다.

- 히프의 맨 앞 요소(최솟값)이 k 이상이라면 종료하고, heap의 크기가 한개이면서, k 이상도 아니라면 스코빌 지수를 k 이상으로 할 수 없는 것이므로 -1로 변경한다.

- 최소 히프에서 두개의 요소를 꺼낸다(최솟값, 그다음 최솟값)

- 공식에 따라 최솟값 + 그다음 최솟값 * 2 한 값을 최소 히프에 다시 넣는 과정을 최솟값이 k 이상이 될때까지 반복한다.

import heapq

def solution(scoville, K):
    answer = 0
    heap = []
    for s in scoville:
        heapq.heappush(heap, s)

    while True:
        if heap[0] >= K:
            break
        if len(heap) == 1:
            answer = -1
            break
        t1 = heapq.heappop(heap)
        t2 = heapq.heappop(heap)
        t = t1 + t2*2
        heapq.heappush(heap, t)
        answer += 1


    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 게임 맵 최단거리  (0) 2021.06.22
[ Lv 2 ] 소수 찾기  (0) 2021.06.22
[ Lv 2 ] 기능개발  (0) 2021.06.21
[ Lv 2 ] 타겟 넘버  (0) 2021.06.21
[ Lv 2 ] 오픈채팅방  (0) 2021.06.21

+ Recent posts