HackerRank - Jesse and Cookies


これはHackerRankのJesse and Cookies題です.

質問:


整数kとlist A.
リストAのすべての要素がk以上になるまで
最小の要素と2番目の小さい要素を除去します.
(最小要素+2*2番目の小要素)をリストに追加します.
リスト内のすべての要素がkより大きい場合、追加された値の数が返されます.
不可能な場合は、-1を返します.

コード:

def cookies(k, A):
    # Write your code here
    heapq.heapify(A)
    step = 0
    
    while len(A) > 1 and A[0] < k:
        first = heapq.heappop(A)
        second = heapq.heappop(A)
        heapq.heappush(A,first + second*2)
        step += 1
    
    if A[0] >= k: return step
    else: return -1

プール:


heapqで解いたんだ
heapqは、リストを常に小さな値の前にするデータ構造です.
Aの長さが1より大きいか、Aの最小値(A[0])がkより小さいことを簡単に繰り返す.
while文が終了すると、a[0]がkより大きい場合、step(while文を巡る回数)が返されます.
または-1を返します.