

문제는 N×N 개의 수가 주어질 때, N번째로 큰 수를 구하는 것이다.
N의 최대값은 1500이므로 전체 원소 수는 최대 2,250,000개다.
가장 먼저 든 생각은 이거였다.
하지만 이 방식은:
N번째 큰 수의 정의를 다시 생각해보면:
그래서 전략은 다음과 같다.
heap[0]) = 현재 기준 N번째 큰 수처음에는 입력을 전부 matrix에 저장한 뒤 다시 순회했다.
이 방식은 파이썬에서 불필요한 메모리 + 반복 비용 때문에 시간 초과가 발생했다.
그래서 입력을 받는 즉시 처리하는 코드가 필요했다.
import sys
import heapq
input = sys.stdin.readline
N = int(input())
min_heap = []
for _ in range(N):
min_heap.append(0)
for _ in range(N):
row = map(int,input().split())
for x in row:
min_val = min_heap[0]
if x > min_val:
heapq.heapreplace(min_heap,x)
print(min_heap[0])
N번째로 큰 수가 필요하다면,
크기 N의 min-heap을 만들고 채워넣는 식으로 진행하자