[プログラマー42626]もう少し辛い

3434 ワード

🥚質問する


https://programmers.co.kr/learn/courses/30/lessons/43164
  • ヒップホップ(Heap)

  • 🥚入力/出力



    🍳コード#コード#

    import heapq
    
    
    def solution(scoville, K):
        answer = 0
        heapq.heapify(scoville)
        while scoville[0] < K:
            # 모든 음식의 스코빌 지수를 K이상으로 만들 수 없음 = 더이상 섞을 것이 없음
            if len(scoville) < 2:
                return -1
            mix = heapq.heappop(scoville) + heapq.heappop(scoville)*2
            heapq.heappush(scoville, mix)
            answer += 1
        return answer

    🧂アイデア


    ヒップホップ

  • Python heapqモジュールを使用して正確性と効率テストを行うすべての問題
  • Pythonのheapqモジュールは優先キューアルゴリズムを実現した.
    hipは、すべての親ノードがサブノード以下であるバイナリツリーです.
    (出典:https://docs.python.org/ko/3/library/heapq.html)

  • heapqは,受信したパラメータ配列scovilleをhipに変換する.heapify関数を使用しました.

  • 最も辛くない食べ物のスコヴェル指数がK以上になるまで食べ物をかき混ぜるために、最小のモダンスコヴェル最小の項目scoville[0] < Kであるかどうかをチェックし、while loopを実行します.

  • このとき,再混合可能な食べ物がなく,スコビル指数がKに達しなかった場合,−1を返す.

  • 問題の式섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)は、以下のコードで実現される.
    mix = heapq.heappop(scoville) + heapq.heappop(scoville)*2
    heapq.heappush(scoville, mix)

  • 最も辛くない食べ物のスコヴェル指数がK以上になれば、食べ物を混ぜた回数を答えることができる.