티스토리 뷰

728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3 

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

코드

import heapq
def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville)
    
    while scoville[0] < K:
        new = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
        heapq.heappush(scoville, new)
        answer += 1
        if len(scoville) == 1 and scoville[0] < K:
            return -1
    
    return answer

sort()를 사용하여 풀려고 했으나 시간초과

heapq을 사용하면 따로 정렬을 해주지 않아도 최소힙으로 가장 작은값을 구할 수 있다.

 

리스트를 heapify를 이용해 heapq으로 바꿔준다.

heapq은 push pop을 할 때마다 자동으로 정렬을해준다.

 

마지막까지 K보다 작은 원소가 있다면 -1을 리턴한다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31