백준 10989번 - 수 정렬하기 3 [51]
문제 유형 : 정렬
문제
- N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
- https://www.acmicpc.net/problem/10989
제한사항
-
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
-
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
알게된점
- counting sort 쓰는 방법
- n의 개수는 1 ≤ N ≤ 10,000,000인데
이 수는 10,000보다 작거나 같은 자연수이다.이므로 여러 숫자가 중복해서 나온다는 의미이다!
- n의 개수는 1 ≤ N ≤ 10,000,000인데
solution
import sys
import operator
n = int(input())
arr = list(0 for _ in range(10001))
# print(arr)
# 이 수는 10,000보다 작거나 같은 자연수이다. => counting
for _ in range(n):
t = sys.stdin.readline().strip('\n')
arr[int(t)] +=1
for i in range(1,10001):
for _ in range(arr[i]):
print(i)
나의 한마디
pop(0)는 쓰지 않는걸로 ㅠ…