HackerRank - Jesse and Cookies

HackerRank의 Jesse and Cookies 문제 풀이입니다.

문제:

integer k와 list A가 주어집니다.
list A의 모든 요소들이 k보다 같거나 클 때까지
가장 작은 원소와 두번째로 작은 원소를 제거하고
(가장작은원소 + 2 * 두번째로 작은 원소) 값을 리스트에 추가해줍니다.

리스트의 모든 원소들이 k보다 클 경우 추가한 값의 갯수를 return 합니다.
불가능한 경우 return -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 문을 반복한 횟수) 을 return 하고
아니면 -1 을 return 합니다.

좋은 웹페이지 즐겨찾기