N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
그냥 sort 를 쓰면 메모리 초과가 난다.
메모리 제한이 8MB 라서 이 경우에는 계수 정렬 을 사용해야 한다.
계수 정렬은 간단히 말하면, 해당 값이 몇 번 들어왔는지 저장해놨다가 출력하는 방법이다.
import sys
num = int(input())
arr = [0] * 10001
for i in range(num):
inputNum = int(sys.stdin.readline())
arr[inputNum] += 1
for i in range(len(arr)):
if arr[i] != 0:
for j in range(arr[i]):
print(i)
메모리가 제한된 경우에는 계수 정렬을 이용하자!