문제
https://programmers.co.kr/learn/courses/30/lessons/42626
이번 문제는 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
'Python' 카테고리의 다른 글
[백준] 1로 만들기-I am yumida (0) | 2021.12.27 |
---|---|
다이나믹 프로그래밍 설명 - 이코딩, 파이썬 알고리즘 인터뷰 참고-I am yumida (0) | 2021.12.27 |
[프로그래머스]기능개발-I am yumida (0) | 2021.12.23 |
[프로그래머스] 124 나라의 숫자-I am yumida (0) | 2021.12.22 |
[프로그래머스] 추석 트래픽-I am yumida (0) | 2021.12.21 |