🗂️ 문제
링크: ttps://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
💡 접근법
heapq 라이브러리를 사용하면 간단하게 풀 수 있다.
입력으로 들어오는 값들을 1차원 리스트로 만든다. 이때 메모리 초과를 고려하여 heap의 크기를 N으로 고정해야 한다. 따라서 heapq.nlargest(N, arr)를 사용하여 arr에 N번째까지 큰 수들만 남기면서 새로운 입력 값들을 arr에 업데이트한다.
😎 내 코드
import heapq
import sys
N = int(sys.stdin.readline())
arr = []
for _ in range(N):
temp = list(map(int, sys.stdin.readline().split()))
for t in temp:
arr.append(t)
arr = heapq.nlargest(N, arr)
print(heapq.nlargest(N, arr)[-1])
🧐 배운 점
- heapq.nlargest(N, arr)
- 주어진 리스트 arr에서 가장 큰 N개의 값을 담은 리스트를 반환한다.
- 메모리가 초과될 때는 리스트의 길이를 줄여보자. 즉 할당된 요소의 크기나 개수를 줄여야 한다.
✅ 정답 확인
'Algorithm > Baekjoon' 카테고리의 다른 글
[힙] 백준 #1655 가운데를 말해요 - Python (0) | 2024.03.12 |
---|---|
[힙] 백준 #14235 크리스마스 선물 - Python (0) | 2024.03.09 |
[힙, 정렬] 백준 #2571 수 정렬하기 2 - Python (0) | 2024.03.08 |
[그리디] 백준 #1541 잃어버린 괄호 - Python (0) | 2024.03.05 |
[그리디] 백준 #11047 동전 0 - Python (0) | 2024.03.04 |