본문 바로가기
2021/코딩테스트

[프로그래머스] Lv.2 - 더 맵게 (Python)

by 에이도 2021. 1. 4.

 

programmers.co.kr/learn/courses/30/lessons/42626?language=python3

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

 

import heapq as hq

def solution(scoville, K):
    answer = 0
    
    # scoville 리스트를 heapq로 
    hq.heapify(scoville)
    
    
    while True:
        # min1 : 제일 작은 맵기, min2 : 두번째로 작은 맵기입니다.
        min1 = hq.heappop(scoville)
        min2 = hq.heappop(scoville)
        
        # 문제의 요구를 따라 계산 후 scoville에 추가합니다.
        hq.heappush(scoville, (min1 + min2*2))
        
        # 횟수 1회 추가합니다.
        answer +=1
        
        # 제일 작은 맵기가 K보다 크다면(다른 맵기는 모두 K보다 크게되므로) 횟수 return합니다.
        if scoville[0] >= K :
            return answer
        # 만약 scoville이 2개 남았고, 모든 scoville이 K보다 작다면, -1 return합니다.
        if len(scoville) == 2 and sum(scoville) < K:
            return -1

print(solution([1, 2, 3, 9, 10, 12],7))

[out]
2

 

 

댓글