[LV2] 더 맵게 문제링크 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 www.programmers.co.kr |
문제 해설
이번 문제는 heapq을 사용하여 최솟값을 항상 인덱스 0번에 위치시켜 조건에 맞는 식에 대입하여 다시 heapq에 넣어준 후 비교하면 되는 문제이다.
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville) # 주어지는 맵기 리스트 heapq형태로 변환
while scoville[0] < K:
tmp= heapq.heappop(scoville)+heapq.heappop(scoville)*2 #가장 작은 원소와 두번째로 작은 원소 추출 후 식에 대입
heapq.heappush(scoville,tmp)#결과값 다시 heapq에 대입하기
answer+=1 # 섞인 횟수 +1
if len(scoville)==1: # 만약 원소가 1개만 남아있다면 반복문 종료
break
if scoville[0]<K: #모든 음식의 스코빌 지수를 K 로 못만들었다면 -1반환
answer=-1
return answer
Feedback
- 처음에는 deque를 사용하여 풀려고 했으나 항상 최솟값이 가장 왼쪽에 있을 수 없다는 것을 생각 못함
- 계속된 최솟값을 구해야 하는 경우 heapq를 사용하여 구하는 것이 효율적이라는 것을 알게 되었다.
'algorithm > 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스 LV2]두 큐 합 같게 만들기 (0) | 2022.09.08 |
---|---|
[프로그래머스LV2] 거리두기 확인하기 (0) | 2022.08.05 |
[프로그래머스LV2] 게임 맵 최단거리 (0) | 2022.08.01 |
[프로그래머스 LV2]프린터 (0) | 2022.07.28 |
[프로그래머스 LV2] 뉴스 클러스터링 (0) | 2022.07.19 |