🗂️ 문제
링크: 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))
✅ 정답 확인
'Algorithm > Baekjoon' 카테고리의 다른 글
[힙] 백준 #14235 크리스마스 선물 - Python (0) | 2024.03.09 |
---|---|
[힙] 백준 #2075 N번째 큰 수 - Python (1) | 2024.03.08 |
[그리디] 백준 #1541 잃어버린 괄호 - Python (0) | 2024.03.05 |
[그리디] 백준 #11047 동전 0 - Python (0) | 2024.03.04 |
[해시] 백준 #20920 영단어 암기는 괴로워 - Python (0) | 2024.02.20 |