Thief of Wealth

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

 

핵심 아이디어.

너무도 간단한 문제 뒤에 숨겨진 엄청난 제한조건이 있다.

메모리와 시간이다.

이것을 통과하기 위해서는 count sort를 쓰면된다.

왜냐하면 모든 요소들이 1~10000 까지의 연속된 숫자로 이루어져 있기 때문이다!

 

import sys
input = sys.stdin.readline
n = int(input())
cnt = [0 for i in range(10000+1)]
for i in range(n):
    cnt[int(input())] += 1
for i in range(1, 10000+1):
    for j in range(cnt[i]):
        print(i)

'개발 > 알고리즘' 카테고리의 다른 글

[BOJ] 1026 보물  (0) 2020.11.13
[BOJ] 11650 좌표 정렬하기  (0) 2020.11.11
[BOJ] 18310 안테나  (0) 2020.11.08
[BOJ] 18405 경쟁적 전염  (0) 2020.11.07
[BOJ] 1699 제곱수의 합  (0) 2020.11.06
profile on loading

Loading...