[Programmers 42626] 더 맵게

Updated:

문제

LV2 [Programmers 42626 - 더 맵게]

문제 풀이 방법

전에 풀어본 문제여서 다시 푸는데 오래 걸리지 않았다! 우선 계속 스코빌 지수가 가장 낮은 두개의 음식을 뽑아야 하기 때문에 우선순위 큐를 사용했다.

  1. 우선순위 큐를 선언한다.
  2. 주어진 배열을 우선순위 큐에 삽입한다.
  3. 우선순위 큐의 가장 작은 원소가 K이상이 될 떄까지 반복문을 돌면서 다음 과정을 수행한다.
    1. 큐에 들어있는 음식이 2개보다 작다면 -1 return한다.
    2. 가장 작은 음식 2개를 뽑아 스코빌 지수를 계산한다.
    3. 계산한 값을 우선순위 큐에 삽입한다.
    4. 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))

댓글남기기