https://www.acmicpc.net/problem/10989
import sys
n = int(input())
# 주어지는 숫자는 10,000보다 작거나 같음.
# 숫자가 등장할 때 마다 해당하는 인덱스의 요소 1씩 증가
nums = [0]*10001
for i in range(n):
nums[int(sys.stdin.readline())] += 1
# 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력
for num in range(10001):
count = nums[num] # num이 등장한 횟수
if count == 0:
continue
for i in range(count):
print(num)
수의 개수인 n의 크기가 10,000,000까지 주어질 수 있어서 긴장했는데, 10,000,000개의 요소를 저장할 수 있는 자료구조는 필요 없었다. 중요했던 것은 주어지는 수가 10,000보다 작은 자연수들이라는 것.
따라서 리스트를 만든 뒤, 수가 주어지면 그 수를 인덱스로 삼는 요소의 값을 1 증가시키는 방식으로 진행했다. (수의 개수 세기!)
이렇게 하면 편리한 것은, 이미 인덱스는 오름차순이므로 따로 또 정렬하지 않아도 된다는 것!
리스트의 어떤 인덱스가 갖는 값이 0보다 클 때, 그 값만큼 인덱스의 값을 프린트해주면 되는 문제였다.
난 정말 똑똒해!