# 접근법
우선순위 큐를 이용합니다.
최소 힙의 크기를 N으로 고정시켜가며 숫자들을 힙에 넣었다 뺐다 반복합니다.
최소 힙에서 요소를 제거할 때는 항상 최솟값이 제거되므로, 모든 수를 넣었다 빼기를 반복했을 때 최종적으로 힙에 남게 되는 수들은 N * N개의 숫자들 중 제일 큰 숫자 N개가 됩니다.
* 이 방법은 '모든 수는 자신의 한 칸 위에 있는 수보다 크다'라는 규칙을 딱히 이용하지 않고 풀 수 있는 풀이법입니다.
# 답
import heapq
h = []
n = int(input())
for _ in range(n):
s = map(int, input().split())
for i in s:
if len(h) >= n:
heapq.heappushpop(h, i)
else:
heapq.heappush(h, i)
print(h[0])
728x90
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 1931번 "회의실 배정" (0) | 2022.04.22 |
---|---|
(파이썬) 백준 3085번 "사탕 게임" (0) | 2022.04.22 |
(파이썬) 백준 1935번 "후위 표기식2" (0) | 2022.04.22 |
(파이썬) 백준 1302번 "베스트셀러" (0) | 2022.04.21 |
(파이썬) 백준 11286번 "절댓값 힙" (0) | 2022.04.21 |