알고리즘 스터디 - 프로그래머스 : 더 맵게

김진성·2021년 12월 4일
0

Algorithm 문제풀이

목록 보기
16/63

문제 해석

  • 모든 음식의 스코빌 지수를 K 이상으로 형성
  • 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)

어떤 알고리즘을 써야할까? Heap!!

  • 이번 문제를 풀면서 느낀 것은 확실히 heap의 장점을 알 수 있었다.
  • heap이 트리 구조로 숫자 같은 것을 정리할 수 있으면서 최소 및 최대값을 구하기 쉽다는 것이다.

오류 : heap argument must be a list

heapify를 잘 못 쓸 때

heap = heapq.heapify(scoville)
  • 처음에 이 함수에 나는 반환값이 존재하는 줄 알았다.

기본 형식

heapq.heapify(scoville)
print(scoville)
  • 이 형식으로 하면 scoville 리스트가 문제 없이 heap으로 바뀌었음을 알 수 있다.

알고리즘 코드

import heapq

def solution(scoville, K):
    heapq.heapify(scoville)
    answer = 0
    
    while scoville[0] < K:
        try:
            num = heapq.heappop(scoville) + heapq.heappop(scoville)*2
            heapq.heappush(scoville, num)
            answer += 1
        except IndexError:
            return -1
            
    return answer
profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글