Algorithm
[알고리즘]프로그래머스: "더 맵게"
Im_light.J
2023. 1. 31. 22:51
728x90
음식의 스코빌 지수가 들어있는 리스트 scovlle을 입력받는다
가장 스코빌이 낮은 음식과 두번째로 낮은 음식을 섞에 새로운 스코빌의 음식을 얻는데
섞인음식 mixed = 가장 낮은 스코빌 + 2*두번째로 낮은 스코빌이다.
모든 음식이 K이상의 스코빌을 가지도록 이를 반복하고
반복횟수의 최솟값을 return한다
from heapq import heappush, heapify ,heappop
def solution(scoville, K):
cnt =0
heapify(scoville)
while scoville[0]<K:
first =heappop(scoville)
second=heappop(scoville)
mixed = first + 2*second
heappush(scoville, mixed)
cnt+=1
if len(scoville)==1 and scoville[0]<K:
return -1
return cnt
heap구조를 활용하였다.
처음에는 정렬알고리즘과 deque의 popleft를 활용해 진행하였는데
최악의 처음 n번의 정렬을 진행하기 때문에, 효율성 테스트에서 시간초과가 발생하였다.
heap 구조를 활용해 추가적인 정렬없이(정확히는 heappush나 pop에서 정렬이 진행되지만)
진행하였을 때 시간초과 없이 성공할 수 잇었다.
728x90