incastle의 콩나물
[알고리즘] 백준 10989번, 수 정렬하기 3 , python(23) 본문
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
이 문제 같은 경우는 입력 개수가 많고, 값이 범위는 상대적으로 좁다.
이 때 사용할만한 알고리즘이 계수 정렬(Counting Sort) 알고리즘이다
계수 정렬
- 배열의 인덱스를 특정한 데이터의 값으로 여기는 정렬 방법
- 배열의 크기는 데이터의 범위를 포함할 수 있도록 설정
- 데이터가 등장한 횟수를 센다.
import sys
n = int(sys.stdin.readline())
## 입력 수가 많을 때는 Readlined을 사용해야 한다.
array = [0] * 10001
for i in range(n):
data = int(sys.stding.readline())
array[data] += 1
for i in range(10001):
if array[i] != 0:
for j in range(array[i]):
print(i)
'python > 알고리즘' 카테고리의 다른 글
list vs numpy appending (0) | 2021.06.09 |
---|---|
[알고리즘] 백준 1074번, Z, 재귀 , python(24) (0) | 2020.04.13 |
[알고리즘] 백준 5397번, 키로거 , 스택 , python(22) (0) | 2020.04.05 |
[알고리즘] 백준 1966번, 프린터 큐, 정렬, python(21) (0) | 2020.04.05 |
[알고리즘] 백준 1427번, 나이순 정렬 , 정렬, python(20) (0) | 2020.03.10 |
Comments