파이썬의 기본 정렬 라이브러리는 O(nlogn)의 시간복잡도를 가지기 때문에 천만개의 데이터는 메모리초과
시간복잡도 O(n)의 계수정렬 알고리즘을 이용해야함
import sys
n = int(sys.stdin.readline())
arr = [0] * 10001
for i in range(n):
num = int(sys.stdin.readline())
arr[num] += 1
for i in range(10001):
if arr[i] != 0:
for j in range(arr[i]):
print(i)
데이터의 개수가 많을때는 sys.stdin.readline() 을 사용해야함
arr = [int(x) for x in input().split()] 이방법보다
arr = map(int, sys.stdin.readline().split()) 이 빠르다
'알고리즘 > 백준 (Pyhthon)' 카테고리의 다른 글
[알고리즘] 백준 1074 Z (0) | 2020.01.30 |
---|---|
[알고리즘] 백준 2747 피보나치 수 (0) | 2020.01.30 |
[알고리즘] 백준 11650 좌표 정렬하기 (0) | 2020.01.30 |
[알고리즘] 백준 10814 나이순 정렬 (0) | 2020.01.30 |
[알고리즘] 백준 1427 소트인사이드 (0) | 2020.01.29 |