Published:
Updated:

  • 정리
    • 생각을 정리하려고 참고한 블로그이다. 그림으로 정리가 정말 잘 되어 있다.


Solution

import heapq
import sys
from typing import List


def solution(N: int, nums_list: List[List[int]]) -> int:
    # 최초 힙 생성 (첫번째 리스트 객체의 원소)
    heap = []
    for num in nums_list[0]:
        heapq.heappush(heap, num)

    # 각 원소를 탐색
    for i in range(1, N):
        current_nums = nums_list[i]
        for current_num in current_nums:
            # 현재 힙의 최솟값(index: 0)보다 현재값이 더 크다면
            if heap[0] < current_num:
                # 힙에 현재값 추가
                heapq.heappush(heap, current_num)
                # 힙의 최솟값 제거 -> 최대 N개의 원소만 유지
                heapq.heappop(heap)

    return heap[0]


N = int(sys.stdin.readline().rstrip())
nums_list: List[List[int]] = []
for _ in range(N):
    nums_list.append(list(map(int, sys.stdin.readline().rstrip().split())))

print(solution(N, nums_list))


Reference

Leave a comment