Python
[프로그래머스] 더 맵게-I am yumida
박유미
2021. 12. 24. 09:03
문제
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
이번 문제는 Heap을 이용했습니다.
코드를 통해 설명하겠습니다.
CODE
def solution(scoville, K):
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