본문 바로가기
백준

[백준] 2075 N번째 큰 수 - Python

by whereisco 2023. 5. 31.

문제

https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net

위 문제는 우선순위 큐를 활용해 해결해야 하는 문제입니다. NxN 크기의 표에서 N번째 큰 수를 찾아야 하는 문제로, 행 단위로 원소들을 입력받은 후 크기를 비교해 나가야 합니다. 그러나 제약 조건의 주어진 메모리 크기가 매우 작기 때문에 우선순위 큐의 크기를 N으로 유지해야 합니다. 우선순위 큐의 크기가 N보다 크면, 다음으로 들어오는 원소가 큐의 가장 앞에 있는 원소보다 큰 경우에만 삽입하도록 하면 문제를 해결할 수 있습니다.

Python

import heapq
n = int(input())
graph = []
for i in range(n):
    numbers = map(int, input().split())
    for num in numbers:
        if len(graph) < n:
            heapq.heappush(graph, num)
        else:
            if graph[0] < num:
                heapq.heappop(graph)
                heapq.heappush(graph, num)
print(graph[0])

'백준' 카테고리의 다른 글

[백준] 11508 2 + 1 세일 - Python  (0) 2023.05.24
[백준] 11399 ATM - Python  (1) 2023.05.24
[백준] 1758 알바생 강호 - Python  (1) 2023.05.24
[백준] 1343 폴리오미노 - Python  (0) 2023.05.24
[백준] 1654 랜선 자르기 - Python  (0) 2023.03.02