첫 시도
N=int(input())
arr = [int(input()) for _ in range(N)]
counts = [0 for _ in range(max(arr)+1)]
for num in arr:
counts[num]+=1
for i,count in enumerate(counts):
for _ in range(count):
print(i)
주어지는 수 10,000,000개를 리스트에 저장해두지 않는 방향으로 가서 메모리를 절약해야 겠다고 생각하여 다음과 같이 변경했지만 시간초과가 발생
N=int(input())
counts = [0 for _ in range(10001)]
for _ in range(N):
counts[int(input())]+=1
for i,count in enumerate(counts):
for _ in range(count):
print(i)
input()의 시간이 너무 느린게 원인인 것 같아 sys.stdin.readline()으로 바꾸어 통과했다.
import sys
N=int(input())
counts = [0 for _ in range(10001)]
for _ in range(N):
counts[int(sys.stdin.readline())]+=1
for i,count in enumerate(counts):
for _ in range(count):
print(i)
이때, python3가 아닌 pypy3에서는 메모리 초과가 발생한다.