프로그래머스 더 맵게 코드 및 해설 (파이썬)

2021. 4. 25. 20:56algorithm

반응형

programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

💡 힙(heap)을 사용하여 풀이했습니다.

 

heapify로 input을 오름차순으로 정렬하고, 가장 맵지 않은 것들 순서대로 2개를 뽑아(pop) 새로운 스코빌 지수를 계산합니다. 이렇게 새로 계산한 스코빌 지수를 input에 push합니다.  

이때, input의 길이가 짧아 2개를 뽑지 못할 수 있으니, 이땐 문제에 명시된 대로 -1을 반환하도록 해줍니다.

 

import heapq

def solution(scoville, K):
    # 섞은 횟수
    answer = 0
    
    # 오름차순 정렬됨 
    heapq.heapify(scoville)
    
    # 최솟값이 K보다 작으면 반복 
    while scoville[0] < K:
        # 섞을 수 없으면 -1 반환 
        if len(scoville) < 2:
            return -1 
        # 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
        new_scoville = heapq.heappop(scoville) + heapq.heappop(scoville) * 2    
        # 새로운 스코빌 지수를 삽입함 
        heapq.heappush(scoville, new_scoville)
        answer += 1 
    
    return answer

 

반응형