백준 10989 파이썬 수 정렬하기 3

 

처음에는 단순한 문제일 줄 알고 그냥 하나씩 받아서 프린트하는 구조로 코드를 짰었다.

import sys

N = int(sys.stdin.readline())
X = []

for i in range(N):
    X.append(int(sys.stdin.readline()))

X.sort()

for i in range(N):
    print(X[i])

 

 

메모리 초과 ㅠㅠ

 

 

문제에서 수들이 10000보다 작거나 같은 자연수라고 했으니 

10000개의 0을 담는 리스트를 만들고 

인풋에 들어온 수 번째의 0을 +1씩 해준다 (이렇게 해야 여러 개 들어왔을 때 여러 개를 프린트할 수 있다)

그러고는 0이 아닌 애들만 프린트 해준다

 

import sys

N = int(sys.stdin.readline())

check = [0] * 10001

for i in range(N):
    num = int(sys.stdin.readline())
    check[num] = check[num] + 1

for i in range(10001):
    if check[i] != 0:
        for j in range(0, check[i]):
            print(i)