[프로그래머스] 더 맵게
2022. 2. 17. 00:18ㆍPython/코딩 문제
# 문제 설명
모든 음식의 스코빌 지수를 K 이상으로 만들려고 한다. 이를 위해 스코빌 지수가 가장 낮은 두 개의 음식을 다음과 같은 방법으로 섞어서 새로운 음식을 만든다.
섞은 음식 스코빌 지수 = 가장 안매운 음식 스코빌 지수 + (2 * 두 번째로 안매운 음식 스코빌 지수)
이를 모든 음식이 K이상의 스코빌 지수를 가질 때까지 반복한다.
만약 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 반환한다.
# 입출력 예시
입력 | 출력 |
scoville = [1,2,3,9,10,12] K = 7 |
2 |
# 코드 풀이
from heapq import heapify, heappush, heappop
def solution(scoville, K):
answer = 0
heapify(scoville)
q = scoville
while q and q[0] < K:
if len(q) < 2:
return -1
answer += 1
heappush(q, heappop(q) + 2*heappop(q))
return answer
# 핵심 포인트
- heapq 모듈을 사용하여 원소들의 정렬 상태를 유지하면서 삽입 및 삭제 연산을 수행한다.
- heapify()로 list를 입력을 받아 제자리 정렬을 수행한다.
반응형
'Python > 코딩 문제' 카테고리의 다른 글
[프로그래머스] 이중 우선순위 큐 (0) | 2022.02.18 |
---|---|
[프로그래머스] 디스크 컨트롤러 (0) | 2022.02.18 |
[리트코드] 743. Network Delay Time (0) | 2022.02.14 |
[프로그래머스] 가장 큰 수 (0) | 2022.02.07 |
[프로그래머스] 베스트앨범 (0) | 2022.02.07 |