https://school.programmers.co.kr/learn/courses/30/lessons/42626?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
모든 음식의 scoville 값을 K 이상으로 만들고 싶습니다. K보다 작은 경우 (가장 맵지 않은 음식의 스코빌레 + 두번째로 맵지 않은 음식의 스코빌레 * 2)로 새로운 음식을 만듭니다.
우선순위 큐(최소힙)를 사용하여 문제를 해결할 수 있습니다.
scoville를 최소힙으로 만들면 첫번재, 두번째 원소를 사용해 새로운 음식을 만들면 됩니다.
이 때, 두번째 원소가 scoville에 에 존재하지 않는 경우 해당 음식은 기준을 만족할 수 없으므로 -1을 리턴합니다.
최소값이 기준값 K 이상이면 while문을 종료하고 정답을 리턴합니다.
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville:
first = heapq.heappop(scoville)
if first >= K: break
if scoville:
second = heapq.heappop(scoville)
heapq.heappush(scoville, first + second * 2)
else:
return -1
answer += 1
return answer
'프로그래머스 > Lv.2' 카테고리의 다른 글
[Python] 프로그래머스 최댓값과 최솟값 (0) | 2024.09.20 |
---|---|
[Python] 프로그래머스 가장 큰 수 (0) | 2024.08.13 |
[Python] 프로그래머스 주식가격 (0) | 2024.08.11 |
[Python] 프로그래머스 다리를 지나는 트럭 (0) | 2024.08.11 |
[Python] 프로그래머스 프로세스 (0) | 2024.08.08 |