heapq를 사용해야하는 문제이다.
메모리 제한이 12MB로 설정되어 있어 입력을 다 받고 처리를 해주면 메모리 초과가 발생했다.
그래서 길이 N을 넘으면 바로바로 heap에서 pop해줘야 한다.
import heapq
n=int(input())
a=[]
heap=[]
for _ in range(n):
a=map(int, input().split())
for i in a:
if len(heap)<n: # 힙의 길이가 n보다 작으면 push
heapq.heappush(heap,i)
else: # 힙의 길이가 n보다 크거나 같으면
if heap[0]<i: # 새로 들어오는 값이 제일 작은 값보다 크면 힙을 pop하고 새로운 값 push
heapq.heappop(heap)
heapq.heappush(heap,i)
# 새로 들어오는 값이 heap[0]보다 작으면 어차피 삭제해야하는 값이므로 무시
print(heap[0])
'알고리즘' 카테고리의 다른 글
[백준 알고리즘] 1292번 쉽게 푸는 문제. 파이썬(python) (0) | 2022.04.21 |
---|---|
[백준 알고리즘] 1975번 소수찾기. 파이썬(python) (0) | 2022.04.20 |
[백준 알고리즘] 2439번 별 찍기-2. 자바(java) (0) | 2020.02.17 |
[백준 알고리즘] 2438번 별 찍기-1. 자바(java) (0) | 2020.02.17 |
[백준 알고리즘] 2884번 알람 시계. 자바(java) (0) | 2020.02.17 |