알고리즘/programmers[2]
[프로그래머스] 더 맵게: python3
fladi
2022. 1. 27. 16:25
728x90
import heapq as hq
def solution(s, K):
answer = 0
hq.heapify(s)
while s[0] < K:
if len(s) == 1:
return -1
answer += 1
mix = hq.heappop(s)+2*hq.heappop(s)
hq.heappush(s, mix)
return answer
<내 풀이 분석>
리스트의 최소값을 얻기 쉽고, 정렬도 자동으로 해주는 heapq모듈(최소힙)을 사용하였다.
answer: 섞은 횟수/ s: 최소 힙
1. s를 heap으로 만들어준다(heapify)
2. s의 최소값(s[0])이 K이상이 될 때까지 while문을 만복한다.
만약 s가 한 개 남았는데도 조건을 만족하지 못한다면 몇 번을 섞어도 K이상으로 만들 수 없는 것 => -1을 반환
최소값과 두 번째로 작은 값을 뽑아 mix하여(식에 대입) 힙에 다시 넣어준다.
3. answer를 반환
728x90