알고리즘

[백준 알고리즘] 2075번 N번째 큰 수. 파이썬(python)

삶은겨란 2022. 4. 15. 15:07

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])