프로그래머스 힙 Level 2 더 맵게 파이썬 풀이

minan·2021년 6월 21일
0

프로그래머스

목록 보기
14/92

프로그래머스 힙 Level 2 더 맵게 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/42626

heapq만 알고있다면 Level 1 정도의 문제

import heapq

def solution(scoville, K):
    # heapq를 사용하여 최소힙으로 변환
    heapq.heapify(scoville)

    # 계산 횟수
    count = 0

    # 스코빌 배열의 크기가 2 이상이고 제일 작은 스코빌 지수가 K보다 작다면 반복
    while len(scoville) >= 2 and scoville[0] < K:
        count += 1 # 계산횟수 +1
        a = heapq.heappop(scoville) # 제일 작은값
        b = heapq.heappop(scoville) # 두번째로 작은값
        heapq.heappush(scoville, (a + b * 2)) # 섞어서 힙에 넣음

    # 스코빌 배열의 크기가 1이고 그 값이 K보다 작다면 만들 수 없는 경우
    if len(scoville) == 1 and scoville[0] < K:
        return -1  # -1 리턴

    return count
profile
https://github.com/minhaaan

0개의 댓글