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 합니다.
Author And Source
이 문제에 관하여(HackerRank - Jesse and Cookies), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@young221718/HackerRank-Jesse-and-Cookies저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)