알고리즘, 자료구조/프로그래머스

[python] 더맵게

jaee 2026. 1. 13. 13:11

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성

섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)

 

풀이

  • 가장 안매운 메뉴, 두번째로 안매운 메뉴를 뽑아 계산해야됨 = heap 관련 문제
import heapq

def solution(scoville, K):
    answer = 0

    # 가장 안매운 메뉴가 K보다 크다면 0 리턴
    if min(scoville) > K:
        return 0

    # scoville을 heap 구조로 변경
    heapq.heapify(scoville)
    smallest = heapq.heappop(scoville)

    while smallest < K:
        if not scoville:
            return -1

        answer += 1

        next = heapq.heappop(scoville) * 2
        heapq.heappush(scoville, smallest + next)
        smallest = heapq.heappop(scoville)

    return answer