import sys
input = sys.stdin.readline
N = int(input().strip())
arr = [0 for _ in range(10000)]
for _ in range(N):
num = int(input().strip())
arr[num-1] += 1
for i in range(10000):
if arr[i] > 0:
for _ in range(arr[i]):
sys.stdout.write(str(i+1) + '\\n')
기본 정렬 메서드를 사용한 풀이는 다음과 같습니다 :
import sys
input = sys.stdin.readline
N = int(input())
arr = [int(input()) for _ in range(N)]
arr.sort()
sys.stdout.write('\\n'.join(map(str, arr)) + '\\n')
그러나 이렇게 풀면 메모리 초과가 나옵니다. 정확히는 설명하지 못 하지만 어쨌든 메모리 초과가 발생했다는건 각 정수들을 천만개로 한 번에 관리하기 때문일 것입니다. 이럴 경우에 사용해볼만한 정렬 알고리즘은 계수 정렬이 있습니다. 계수 정렬은 다음과 같은 장단점이 있습니다 :