programmers.co.kr/learn/courses/30/lessons/42626?language=python3
import heapq as hq
def solution(scoville, K):
answer = 0
# scoville 리스트를 heapq로
hq.heapify(scoville)
while True:
# min1 : 제일 작은 맵기, min2 : 두번째로 작은 맵기입니다.
min1 = hq.heappop(scoville)
min2 = hq.heappop(scoville)
# 문제의 요구를 따라 계산 후 scoville에 추가합니다.
hq.heappush(scoville, (min1 + min2*2))
# 횟수 1회 추가합니다.
answer +=1
# 제일 작은 맵기가 K보다 크다면(다른 맵기는 모두 K보다 크게되므로) 횟수 return합니다.
if scoville[0] >= K :
return answer
# 만약 scoville이 2개 남았고, 모든 scoville이 K보다 작다면, -1 return합니다.
if len(scoville) == 2 and sum(scoville) < K:
return -1
print(solution([1, 2, 3, 9, 10, 12],7))
[out]
2
'2021 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.2 - 기능개발 (python) (0) | 2021.01.04 |
---|---|
[프로그래머스] Lv.2 - 소수찾기 (Python) (0) | 2021.01.02 |
[프로그래머스] Lv.2 - H-Index (Python) (0) | 2021.01.01 |
[프로그래머스] Lv.2 - 다리를 지나는 트럭 (Python) (0) | 2021.01.01 |
[프로그래머스] Lv.2 - 프린터 (Python) (0) | 2020.12.29 |
댓글