- 우선 모든 요소를 최소 히프에 넣어 준다.
- 히프의 맨 앞 요소(최솟값)이 k 이상이라면 종료하고, heap의 크기가 한개이면서, k 이상도 아니라면 스코빌 지수를 k 이상으로 할 수 없는 것이므로 -1로 변경한다.
- 최소 히프에서 두개의 요소를 꺼낸다(최솟값, 그다음 최솟값)
- 공식에 따라 최솟값 + 그다음 최솟값 * 2 한 값을 최소 히프에 다시 넣는 과정을 최솟값이 k 이상이 될때까지 반복한다.
import heapq
def solution(scoville, K):
answer = 0
heap = []
for s in scoville:
heapq.heappush(heap, s)
while True:
if heap[0] >= K:
break
if len(heap) == 1:
answer = -1
break
t1 = heapq.heappop(heap)
t2 = heapq.heappop(heap)
t = t1 + t2*2
heapq.heappush(heap, t)
answer += 1
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 2 ] 게임 맵 최단거리 (0) | 2021.06.22 |
---|---|
[ Lv 2 ] 소수 찾기 (0) | 2021.06.22 |
[ Lv 2 ] 기능개발 (0) | 2021.06.21 |
[ Lv 2 ] 타겟 넘버 (0) | 2021.06.21 |
[ Lv 2 ] 오픈채팅방 (0) | 2021.06.21 |