[백준] 2075 : N번째 큰 수

JIN·2022년 1월 20일
0

우선순위 큐

N번째 큰 수

메모리 제한이 12MB로 어마어마하게 작다.
문제에서 "채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다"는 조건이 있어서 저 표를 90 도 돌리고 정렬해서 우선 순위큐에 넣어서 풀면 되겠다 라고 생각했는데 메모리 제한이 턱없이 작다.
이 문제는 콘센트 문제처럼 5개가 넘어가면 6번째 큰수는 버리는 것이 문제 풀이의 핵심이다.
나머지는 우선순위큐의 기본과 똑같아서 뒤집을 필요도 없이 이 문제를 풀 수 있다.

import sys
import heapq
input = sys.stdin.readline
n = int(input())
lst = []
for i in range(n):
	lst.append(list(map(int, input().split())))

result = []
for i in lst:
	for j in i:
    		# minHeap
		heapq.heappush(result, j)
        	# 5개가 넘어가면 젤 작은 수부터 버려!
		if len(result) > n:
			heapq.heappop(result)
# 가장 작은 수부터 5개 있으니 가장 작은수 출력
print(result[0])

profile
배우고 적용하고 개선하기

0개의 댓글