문제 링크 : programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
heap을 사용하기 위해 heapq 라이브러리를 이용하였다.
input으로 들어오는 scoville을 heapify하게되면, heap형태로 변환되기 때문에
첫 번째 heapq.heappop()를 통해 가장 맵지 않은 음식의 스코빌 지수, 두 번째 heapq.heappop()를 통해 두 번째로 맵지 않은 음식의 스코빌 지수를 얻을 수 있다.
import heapq def solution(scoville, K): # len(scoville) : 1 <= n <= 1000000 # 최대 O(nlogn)정도 answer = 0 heapq.heapify(scoville) while scoville[0] < K: if len(scoville) <= 1: return -1 mix_scoville = heapq.heappop(scoville) + heapq.heappop(scoville) * 2 heapq.heappush(scoville, mix_scoville) answer += 1 return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] K번째 수 (0) | 2021.06.21 |
---|---|
[프로그래머스] 이중우선순위큐 (0) | 2021.06.20 |
[프로그래머스] 기능개발 (0) | 2021.04.14 |
[프로그래머스] 주식가격 (0) | 2021.04.12 |
[프로그래머스] 위장 (0) | 2021.03.27 |