https://www.acmicpc.net/problem/10989
from sys import stdin
import collections
N = int(stdin.readline())
nums = collections.defaultdict(int)
for i in range(N):
n = int(stdin.readline())
nums[n] += 1
nums = sorted(nums.items())
for k, v in nums:
for _ in range(v):
print(k)
nums 라는 딕셔너리를 이용해서 입력받은 숫자들의 개수를 저장
nums 의 key 를 기준으로 정렬 후 개수 만큼 print

from sys import stdin
N = int(stdin.readline())
nums = [0]*10001
for i in range(N):
n = int(stdin.readline())
nums[n] = nums[n] + 1
for i in range(10001):
for j in range(nums[i]):
print(i)
N 의 범위가 10,000 보다 작거나 같은 자연수라고 주어졌으므로
처음부터 nums 의 길이를 10001 로 잡음
인덱스를 숫자로, 배열의 값은 개수로 사용해서 입력받은 숫자의 개수를 모두 저장
10001 개의 숫자들을 모두 보면서 개수만큼 print
정렬 없이 사용할 수 있다!!

https://www.acmicpc.net/problem/11047
from sys import stdin
N, K = map(int, stdin.readline().split())
coins = []
ans = 0
for _ in range(N):
c = int(stdin.readline())
coins.append(c)
for i in range(N-1, -1, -1):
if coins[i] <= K:
ans += K // coins[i]
K = K % coins[i]
print(ans)
coins 는 이미 정렬된 상태이므로 큰 값부터 K 에서 빼기 위해 역순으로 for 문 돌리기
coins[i] 가 K 보다 작아지는 순간의 coins[i] 를 K 에서 최대한 많이 빼기
=> K // coins[i]
(반복문으로 직접 빼면 시간 초과)
