문제

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

이번 문제는 Heap을 이용했습니다.

코드를 통해 설명하겠습니다.

CODE

def solution(scovilleK):
 
import heapq                       #heapq를 임포트합니다.
 
    answer=0
    scoville.sort()                        #scoville을 정렬합니다.
 
    while scoville[0]<K:           
 
   #첫번째 Loop에서 가장 작은 scoville이 K보다 작은지 확인합니다. 두번째 Loop부터는 새로 계산된 값 a+(b*2)가 scoville[0]이 되고, K보다 작은지 확인합니다.
 
        if len(scoville)==1:          #scoville이 한 개의 값이라면, -1을 return 합니다. 이 값은 K보다 작은 값이 될 것이기 때문입니다.
            return -1
 
        else:
            a=heapq.heappop(scoville)          #heappop을 통해 soville의 최소값이 나오면서 해당값은 scoville에서 사라집니다.
            b=heapq.heappop(scoville)          #heappop을 통해 soville의 최소값이 나오면서 해당값은 scoville에서 사라집니다.
            heapq.heappush(scoville,a+(b*2))  #heappush를 이용해 scoville의 맨 앞에 a+(b*2)을 추가합니다.
            answer+=1    
 
    return answer

+ Recent posts