[백준/Python]2075_N번째 큰 수

2021. 6. 3. 13:02백준 알고리즘

문제

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

 

2075번: N번째 큰 수

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

www.acmicpc.net

풀이

우선순위 큐를 이용해서 풉니다.

먼저 입력으로 주어진 matrix의 첫 행을 최소 힙에 저장합니다.

힙의 root값(최솟값)은 n번째 큰 수가 되며 힙의 length를 유지하면서 반복문을 도는 게 핵심입니다.

이중 반복문을 돌면서 숫자 하나씩 힙에 heappush 하고 root값을 heappop 합니다.(단, 현재 힙의 root값보다 클 경우만 동작한다)

최종적으로 root값을 출력합니다.

코드

import heapq
import sys

n = int(sys.stdin.readline().rstrip())
numbers = []
lst = list(map(int, sys.stdin.readline().rstrip().split()))
for i in lst:
    heapq.heappush(numbers, i)
for _ in range(n - 1):
    lst = list(map(int, sys.stdin.readline().rstrip().split()))
    for num in lst:
        if num > numbers[0]:
            heapq.heappush(numbers, num)
            heapq.heappop(numbers)
print(numbers[0])

 

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

[백준/Python]1004_어린 왕자  (0) 2021.06.05
[백준/Python]2293_동전 1  (0) 2021.06.05
[백준/Python]11659_구간 합 구하기 4  (0) 2021.06.04
[백준/Python]11057_오르막 수  (0) 2021.06.04
[백준/Python]1461_도서관  (0) 2021.06.03