N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
# 카운팅 정렬, but 메모리 초과
count = [0] * (max(numbers.values)+1)
tmp = [0] * len(numbers.values)
for i in numbers.values:
count[i] += 1
for i in range(1,len(count)):
count[i] += count[i-1]
for number in range(len(numbers)-1, -1, -1):
tmp[count[numbers[number]]-1] = numbers[number]
count[numbers[number]] -= 1
for i in tmp:
print(i)
import sys
n = int(input())
numbers = {}
for _ in range(n):
number = int(sys.stdin.readline())
numbers[number] = numbers.get(number, 0) + 1
for i in sorted(numbers.keys()):
for _ in range(numbers[i]):
print(i)