-
[프로그래머스] 더 맵게 (by Python)Programming/Algorithm 2021. 5. 16. 03:36
문제
https://programmers.co.kr/learn/courses/30/lessons/42626
풀이
import heapq def solution(scoville, K): count = 0 scoville.sort() while len(scoville) != 1: temp = heapq.heappop(scoville) + 2 * heapq.heappop(scoville) heapq.heappush(scoville, temp) count += 1 if scoville[0] >= K: return count return -1
스코빌 지수를 담은 array가 정렬되어있다고 가정했을 때, 가장 작은 2개로 제시된 알고리즘을 계속 진행해주면 된다. 다만, 정렬되어있는 상태를 유지하는 것이 어려울 수 있다. 가장 작은 2개로 알고리즘을 수행하고 새로 생성된 음식의 스코빌 지수를 array에 넣어줄 때 그 순서를 알 필요가 있기 때문이다. 이를 처리하기 쉽게 하기 위해 heap을 차용하는 것이 핵심 아이디어.
'Programming > Algorithm' 카테고리의 다른 글
[프로그래머스] 폰켓몬 (by Python) (0) 2021.05.16 [프로그래머스] 음양 더하기 (by Python) (0) 2021.05.16 [백준] 17086번 아기 상어 2 (by Python) (0) 2021.04.11 [백준] 1303번 전쟁 - 전투 (by Python) (0) 2021.04.11 [백준] 1038번 감소하는 수 (by Python) (0) 2021.04.08