문제
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 |