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
'알고리즘 > programmers[2]' 카테고리의 다른 글
[프로그래머스] 오픈채팅방: python3 (0) | 2022.01.28 |
---|---|
[프로그래머스] 행렬의 곱셈: python3 (0) | 2022.01.28 |
[프로그래머스] 문자열 압축: python3 (0) | 2022.01.27 |