본문 바로가기

두두의 알고리즘/문제

[연결리스트/트리구조] 프로그래머스 L2 '더 맵게' (Python)

728x90

<문제 링크>

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr


<문제 풀이>

  1. 계산해야 할 값의 최솟값의 개수가 최대 1,000,000개 이므로 heapq 사용
  2. 주어진 문제대로 알고리즘 구성함

<코드>

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

 

<고쳐야 할 점>

  • 리스트를 heapq로 만드는 heapify(리스트) 기억하기
  • 문제 꼼꼼히 읽기