[프로그래머스] 더 맵게

2022. 2. 17. 00:18Python/코딩 문제

# 문제 설명

모든 음식의 스코빌 지수를 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를 입력을 받아 제자리 정렬을 수행한다.

 

 

 

 

반응형