입출력 예 설명
1.스코빌 지수가 1인 음식과 2인 음식을 섞으면 음식의 스코빌 지수가 아래와 같이 됩니다.
새로운 음식의 스코빌 지수 = 1 + (2 * 2) = 5
가진 음식의 스코빌 지수 = [5, 3, 9, 10, 12]
2.스코빌 지수가 3인 음식과 5인 음식을 섞으면 음식의 스코빌 지수가 아래와 같이 됩니다.
새로운 음식의 스코빌 지수 = 3 + (5 * 2) = 13
가진 음식의 스코빌 지수 = [13, 9, 10, 12]
모든 음식의 스코빌 지수가 7 이상이 되었고 이때 섞은 횟수는 2회입니다.
접근법
처음에 단순 리스트로 접근하려했으나, 효율성에서 시간 초과가 나서, heapq를 사용하였습니다. heapq는 단순 리스트와 다르게 들어가는 요소를 자동으로 정렬시켜줍니다. pop을 할 경우에는 리스트에서 가장 작은 원소를 내보냅니다.
나의 코드
import heapq
def solution(scoville, K):
answer = 0
scoville_heap = []
for value in scoville: heapq.heappush(scoville_heap,value)
while scoville_heap[0] < K:
if len(scoville_heap) < 2: return -1
heapq.heappush(scoville_heap, (heapq.heappop(scoville_heap) + (heapq.heappop(scoville_heap)*2)))
answer+=1
return answer