import sys
n = int(sys.stdin.readline())
numberList= [0]*10001
for i in range(n):
numberList[int(sys.stdin.readline())] += 1
for i in range(len(numberList)):
if numberList[i] != 0:
for _ in range(numberList[i]):
print(i)
오늘 풀이로부터 배운게 많았다.
list에 요소를 추가할 때 append를 사용하면 메모리를 재할당하는 과정에서 효율적이지 못하다고 한다.
(1) 기존의 input() => sys.stdin.readline()
으로 입력 받기
(2) 입력으로 받는 수의 범위가 10,000정도로 별로 크지 않으니 그만큼의 공간을 미리 할당해놓고 인덱스에 해당하는 값이 입력을 받았을 경우 입력받은 개수만큼 인덱스에 저장해두는 방식을 이용하기
가 이번 문제의 핵심 접근 방식인 것 같다.
시간적/공간적으로 효율적인 정렬 방식이므로 잘 기억해두기!
앞으로 입력은 sys.stdin.readline()으로 받아야겠다.