[Programmers 42626] 더 맵게
문제
LV2 [Programmers 42626 - 더 맵게]
문제 풀이 방법
전에 풀어본 문제여서 다시 푸는데 오래 걸리지 않았다! 우선 계속 스코빌 지수가 가장 낮은 두개의 음식을 뽑아야 하기 때문에 우선순위 큐를 사용했다.
- 우선순위 큐를 선언한다.
- 주어진 배열을 우선순위 큐에 삽입한다.
- 우선순위 큐의 가장 작은 원소가 K이상이 될 떄까지 반복문을 돌면서 다음 과정을 수행한다.
- 큐에 들어있는 음식이 2개보다 작다면 -1 return한다.
- 가장 작은 음식 2개를 뽑아 스코빌 지수를 계산한다.
- 계산한 값을 우선순위 큐에 삽입한다.
- answer += 1을 해준다.
풀이 코드
Python
import heapq
def solution(scoville, K):
answer = 0
heap=[]
for i in scoville:
heapq.heappush(heap,i)
while heap[0]<K:
if len(heap)==1:
return -1
sco=0
sco += heapq.heappop(heap)
sco += 2 * heapq.heappop(heap)
heapq.heappush(heap, sco)
answer += 1
return answer
print(solution([0, 0, 3, 9, 10, 12], 7000))
댓글남기기