https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
자료구조 heapq 를 공부하니 의외로 쉽게 문제가 풀렸다.
2021.08.11 - [Study/자료구조 & 알고리즘] - [자료구조] heap(힙 자료구조) / Python heapq(힙큐)
[자료구조] heap(힙 자료구조) / Python heapq(힙큐)
스택(Stack) 과 큐(Queue) 큐 (queue) 는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어넣은 데이터가 먼저 나오는 FIFO 구조로 저장하는 형식을 말한다. 우선순위 큐는 우선순위의 개념을 큐에
mhlee.tistory.com
idea
- scoville을 최소힙으로 정렬한다. 첫번째 원소(루트노드) 가 K보다 작으면 항상 주어진 연산을 수행한다.
- 두 음식을 섞어 새로운 음식을 만들기 때문에 연산을 할수록 scoville의 원소의 갯수가 줄어든다.
따라서 수행 도중 스코빌의 길이가 2가 되지 않는다면 모든 음식의 스코빌 지수를 K이상으로 만들 수 없는 경우이다. - 섞은 음식의 스코빌 지수를 push 할 때마다 섞은 횟수를 1 씩 증가시킨다.
import heapq as hq
def solution(scoville, K):
hq.heapify(scoville)
answer = 0
while scoville[0] < K:
if (len(scoville) < 2):
return -1
first = hq.heappop(scoville)
second = hq.heappop(scoville)
tmp = first + (second * 2)
hq.heappush(scoville, tmp)
answer += 1
return answer
'STUDY > 코딩테스트 연습문제 풀이' 카테고리의 다른 글
[프로그래머스][정렬] 가장 큰 수 (0) | 2021.08.14 |
---|---|
[프로그래머스][정렬] K번째수 (0) | 2021.08.14 |
[프로그래머스][해시] 완주하지 못한 선수 (0) | 2021.08.07 |