https://school.programmers.co.kr/learn/courses/30/lessons/138477
def solution(k, score):
answer = []
honor = [] # 명예의 전당
for i in range(len(score)):
honor.append(score[i])
honor.sort(reverse = True) # 내림차순 정렬
honor = honor[:k] # k만큼 짜르기
answer.append(honor[-1]) # 명예의 전당 최하위 점수 추가
return answer
import heapq
def solution(k, score):
max_heap = []
answer = []
for sc in score:
heapq.heappush(max_heap, (-sc, sc)) # 최대힙으로 저장
answer.append(max(heapq.nsmallest(k, max_heap))[1])
return answer
- heapq.nsmallest(k, max_heap)은 max_heap에서 상위 k개의 요소를 반환
- max()로 k중에 가장 큰 값 반환
- [1]을 이용해 실제 점수 선택
이것만 봐서는 이해가 잘 안가니 예시를 보자.
예시) heapq.nsmallest(k, max_heap)이 (-150, 150), (-120, 120), (-100, 100)을 반환했다고 가정하자. 이 중에서 max() 함수는 k가 가장 큰 (-100, 100)을 선택하고, [1]을 통해 100을 반환한다.