5_hyun 2022. 5. 1. 21:16
반응형

https://programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

 

내 풀이(질문 봄)

import heapq

def solution(scoville, K):
    answer = 0
    scoville.sort()
    sum = 0
    while scoville[0] < K:
        if len(scoville) <= 1:
            answer = -1
            break
        a = heapq.heappop(scoville)
        b = heapq.heappop(scoville)
        sum = a + (b*2)
        heapq.heappush(scoville, sum)
        answer += 1
        
    return answer

거의 다 맞췄지만 처음에 sort()로 정렬을 해줘야하는 것을 빼 먹었다. sort()를 하면 heapfiy를 안해줘도 된다. 이렇게해서 scoville에 있는 모든 원소가 K보다 커질 때 까지 반복한다. 만약 scoville가 1개가 남았으면 더 이상 진행할 수 없다. 그래서 answer에 -1을 넣고 멈춘다.

반응형