Algorithm/Baekjoon
[힙, 정렬] 백준 #2571 수 정렬하기 2 - Python
jyjyjy25
2024. 3. 8. 00:02
🗂️ 문제
링크: https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
💡 접근법
N의 범위가 1,000,000이므로 시간복잡도 O(NLogN)을 갖는 정렬 알고리즘을 사용해야 한다.
파이썬 내장 정렬함수, 퀵정렬, 병합정렬, 힙정렬이 제한 시간 내에 해결할 수 있는 알고리즘이다. 이 중 힙정렬을 사용하여 구현한다.
파이썬의 heapq 라이브러리는 최소 힙으로 구현되어 있기 때문에 heap 배열을 생성하여 입력값을 push하고 하나씩 pop하면 된다.
😎 내 코드
import heapq
import sys
N = int(sys.stdin.readline())
arr = []
for _ in range(N):
heapq.heappush(arr, int(sys.stdin.readline()))
for _ in range(N):
print(heapq.heappop(arr))