티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
코드
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0] < K:
new = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
heapq.heappush(scoville, new)
answer += 1
if len(scoville) == 1 and scoville[0] < K:
return -1
return answer
sort()를 사용하여 풀려고 했으나 시간초과
heapq을 사용하면 따로 정렬을 해주지 않아도 최소힙으로 가장 작은값을 구할 수 있다.
리스트를 heapify를 이용해 heapq으로 바꿔준다.
heapq은 push pop을 할 때마다 자동으로 정렬을해준다.
마지막까지 K보다 작은 원소가 있다면 -1을 리턴한다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2, 프린터 (Python) (0) | 2021.06.11 |
---|---|
[프로그래머스] Level1, 크레인 인형뽑기 게임 (Python) (0) | 2021.06.11 |
[프로그래머스] Level2, 조이스틱 (Python) (0) | 2021.06.10 |
[프로그래머스] Level2, 점프와 순간 이동 (Python) (0) | 2021.06.10 |
[프로그래머스] Level2, 삼각 달팽이 (Python) (0) | 2021.06.10 |
댓글