프로그래머스 더 맵게 코드 및 해설 (파이썬)
2021. 4. 25. 20:56ㆍalgorithm
반응형
programmers.co.kr/learn/courses/30/lessons/42626
💡 힙(heap)을 사용하여 풀이했습니다.
heapify로 input을 오름차순으로 정렬하고, 가장 맵지 않은 것들 순서대로 2개를 뽑아(pop) 새로운 스코빌 지수를 계산합니다. 이렇게 새로 계산한 스코빌 지수를 input에 push합니다.
이때, input의 길이가 짧아 2개를 뽑지 못할 수 있으니, 이땐 문제에 명시된 대로 -1을 반환하도록 해줍니다.
import heapq
def solution(scoville, K):
# 섞은 횟수
answer = 0
# 오름차순 정렬됨
heapq.heapify(scoville)
# 최솟값이 K보다 작으면 반복
while scoville[0] < K:
# 섞을 수 없으면 -1 반환
if len(scoville) < 2:
return -1
# 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
new_scoville = heapq.heappop(scoville) + heapq.heappop(scoville) * 2
# 새로운 스코빌 지수를 삽입함
heapq.heappush(scoville, new_scoville)
answer += 1
return answer
반응형
'algorithm' 카테고리의 다른 글
프로그래머스 영어 끝말잇기 코드 및 해설 (파이썬) (0) | 2021.04.26 |
---|---|
프로그래머스 괄호 회전하기 코드 및 해설 (파이썬) (0) | 2021.04.26 |
프로그래머스 방문 길이 코드 및 해설 (파이썬) (0) | 2021.04.21 |
프로그래머스 괄호 변환 코드 및 해설 (파이썬) (0) | 2021.04.20 |
프로그래머스 문자열 압축 코드 및 해설 (파이썬) (0) | 2021.04.20 |