210222開発ログ(77日目)-プログラマアルゴリズムの問題「より辛い」解答

3208 ワード

問題は以下の通りです.

方法


最小の食べ物からかき混ぜると言うからには、heapを使ってかき混ぜます.Pythonでは、以下の内蔵モジュールを使用できます.
import heapq

コードの作成

import heapq

def solution(scoville, K):
    heapq.heapify(scoville) 	# heapify를 활용하여 주어지는 scoville list를 heap으로 만든다.
    answer = 0
    while scoville[0]<K and len(scoville)!=1:	# 최소 heap과 K를 비교하고, scoville의 길이도 확인해서 반복문을 실행해준다.
        pop_tmp1 = heapq.heappop(scoville)
        pop_tmp2 = heapq.heappop(scoville)
        insert_tmp = pop_tmp1 + pop_tmp2*2
        heapq.heappush(scoville, insert_tmp)
        answer +=1        
        if len(scoville)==1 and scoville[0]<K:	# 여기서 and 뒤에 조건을 생각해주지 않아서 처음에 틀렸었다!
            return -1

    return answer

注意事項


Pythonが提供するheapは少なくともheapで構成されていることに注意してください.