ProblemSolving/Heap

프로그래머스 더 맵게 (파이썬)

OSNIM 2022. 5. 10. 11:12
반응형

level 2 힙

 

문제 : https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3 

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

 

import heapq

def solution(scoville, K):
    answer = 0
    q = []
    
    for i in scoville:
        heapq.heappush(q,i)
        
    while len(q) > 1:
        if q[0] >= K:
            break
        
        food1, food2 = heapq.heappop(q), heapq.heappop(q)
        scoville = food1 + food2*2
        heapq.heappush(q,scoville)
        answer += 1
        
    if q[0] < K:
        answer = -1
    
    return answer

 

heap의 크기가 1이면 스코빌 지수 계산을 못하므로 종료를 시킵니다.

heap을 사용해서 맨 앞의 최소값만 가져와서 어렵지 않게 문제를 해결했습니다. 

다음부터는 import heapq as hq를 사용해서 간소하게 hq를 사용하겠습니다.

 

반응형