for 문에서 append를 하면 메모리 재할당이 이루어져 메모리 초과가 뜬다.
따라서 입력값이 10000개가 주어질 수 있으므로 길이가 10001인 리스트를 만든다. 리스트에는 0으로 채워 놓고 입력값을 받을 때마다 해당하는 입력값에 1씩 더해준다.
입력을 다 받으면 0이 아닌 숫자가 들어있는 인덱스만을 출력한다.
import sys
n = int(sys.stdin.readline())
num_list = [0] * 10001
for i in range(n):
num_list[int(sys.stdin.readline())] += 1
for i in range(10001):
if num_list[i] != 0:
for j in range(num_list[i]):
print(i)
메모리 사용에 대해 학습할 수 있는 문제였다.
리스트에 입력값 최대 크기만큼 0으로 채워놓고 입력값에 해당하는 인덱스에 +1씩 하는 것이 포인트였다.