minimimi

[백준] 10989 수 정렬하기 3 본문

프로그래밍 공부/알고리즘

[백준] 10989 수 정렬하기 3

99mini 2021. 9. 19. 18:00
반응형

문제출처] https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

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

www.acmicpc.net


문제요약

시간 제한과 메모리 제한이 있어 Counting Sort를 이용해 정렬을 수행하는 문제

풀이

카운팅 정렬(계수 정렬)은 데이터 셋이 특정한 범위로 제한되어 있을 때 속도를 높일 수 있는 정렬 방식이다.

데이터를 인덱스로 가지는 배열에 카운트를 1씩 증가시키는 방식으로 정렬이 수행된다.

input() 을 이용할 때보다 sys.stdin.readline() 을 이용할 때 수행 속도가 향상된다.

소스코드는 Python 3으로 작성되었습니다.

import sys
input = sys.stdin.readline

n = int(input())
arr = [0 for i in range(10001)]

for _ in range(n):
  arr[int(input())] += 1

for i in range(1,10001):
  for _ in range(arr[i]):
    print(i)

 

반응형

'프로그래밍 공부 > 알고리즘' 카테고리의 다른 글

[백준] 15649 N과 M (1)  (0) 2021.09.21
[백준] 2108 통계학  (0) 2021.09.20
[백준] 9020 골드바흐의 추측  (0) 2021.09.18
[백준] 11724 연결 요소의 개수  (0) 2021.09.17
[백준] 15650 N과 M (2)  (0) 2021.09.16