Data miner/Algorithm & Data structure
[자료구조] [heapq] Jesse and Cookies
carayoon
2021. 2. 9. 18:30
728x90
다음의 문제는 heapq을 활용해서 푸는 문제에 해당한다.
Hackerrank의 Data structures 관한 문제 중에서 Easy에 속하는 문제이다. 원 문제 링크는 다음을 따라가보자.
www.hackerrank.com/challenges/jesse-and-cookies/problem
Jesse and Cookies | HackerRank
Calculate the number of operations needed to increase the sweetness of the cookies so that each cookie in the collection has a sweetness >=K.
www.hackerrank.com
- "전체 쿠키의 당도 정보가 포함되어 있는 리스트중에서, 전체 쿠키가 만족시켜야 하는 최소한의 당도가 있다." 문제 설명을 읽으면서, 힙 모듈을 사용해야 겠다는 아이디어를 생각한 부분이다. 쿠키 당도 리스트를 힙 자료형으로 만든 후(heapify), 연산을 통해서 새로운 쿠키를 힙에 추가(heappush)하면서 총 연산의 횟수를 구한다.
import os
import sys
import heapq as H
#
# Complete the cookies function below.
#
def cookies(k, A):
#k = 모든 쿠키가 만족시켜야 하는 최소한의 당도
#A = 쿠키의 당도 정보가 포함되어 있는 리스트
# Write your code here.
H.heapify(A)
answer = 0
while True:
if len(A) == 1 and A[0]<k:
return -1
if A[0] >= k:
return answer
else:
least1 = H.heappop(A)
least2 = H.heappop(A)
new_one = least1 + 2*least2
answer +=1
H.heappush(A, new_one)