programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
[코테리뷰]
문제 접근
-
가장 작은 두 개의 지수를 이용해서 새로운 지수로 바꿔주고, 모든 값이(스코피 지수가) K보다 커질 때까지 걸리는 횟수를 구해준다.
-
효율성 문제 : heapq를 이용하여 최솟값을 보다 빨리 찾을 수 있다.
Heapq 이용 시 알아야 할 3가지
-
heapq로 만들어주기 : heapq.heapify(리스트명)
- 결과 : 해당 리스트가 heap으로 바뀐다.
-
heapq에 원소출력하기 : heapq.heappop(힙명)
- 결과 : 해당 힙의 원소 중 최솟값이 pop된다.
-
heapq에 원소 입력하기 : heaq.heappush(힙명, 원소값)
- 결과 : 해당 힙에 원소값이 추가된다.
내 코드
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville) # 리스트 -> 힙큐로 바꿔준다 :):)
while scoville:
answer += 1
new = heapq.heappop(scoville) # 가장 작은 값이 꺼내진다.(힙의 이름 명시하는 것 잊지 말기)
if not scoville:
return -1
new += heapq.heappop(scoville) * 2
heapq.heappush(scoville, new)
smallest = heapq.heappop(scoville)
if smallest >= K:
break
else:
heapq.heappush(scoville, smallest)
return answer
'CS > 코딩테스트' 카테고리의 다른 글
[코테리뷰] 그리디- Lv2. 구명보트 (0) | 2020.11.26 |
---|---|
[코테리뷰] DFS/BFS - Lv3. 네트워크 (0) | 2020.11.24 |
[코테리뷰] 스택/큐- Lv2. 프린터 (Deque, Stack 사용) (0) | 2020.11.17 |
[코테리뷰] Lv1. 문자열 내림차순으로 배치하기 (0) | 2020.11.14 |
[코테리뷰] 정렬 - Lv2. 가장 큰 수 (0) | 2020.11.12 |
WRITTEN BY
,