단순히 다 입력 받고 그 리스트 sort해서 제출하면서 오 쉽당ㅎ 했는데 입력이 최대 천만개까지...
메모리가 초과되었다고 해서 나름 머리 굴려 딕셔너리 1~10000 만들어서 카운트 올리는 식으로 했는데 여전히 메모리 초과
왜지!!! 10000개면 40KB밖에 안 되는데!
검색해보니 pypy3 쓰면 print() 대신 sys.stdout.write()
써야 메모리 초과가 안 난다고 한다. + input()
대신 sys.stdin.readline()
얘는 자동으로 개행을 안 해줘서 sys.stdout.write(str(i) + '\n')
이런 식으로 써야한다.
j번 반복해서 프린트 했어야 했는데 sys.stdout.write((str(i) + '\n') * j)
이렇게 하는 거보다 for문 써야 메모리 초과 안 난다고 한다. str을 최대 10000번 곱한 걸 저장해놓게 되는 거니까 그런 건가보다.
시간 줄이려고 하면 리스트 만들 때도 num_list = [0 for _ in range(n)]
대신 num_list = [0] * n
import sys
input = sys.stdin.readline
n = int(input())
numlist = [0] * 10001
for i in range(n): numlist[int(input())] += 1
for i in range(1, 10001):
for j in range(numlist[i]):
sys.stdout.write(str(i) + '\n')