less than 1 minute read


문제 유형 : 정렬


문제

  • 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보다 작거나 같은 자연수이다.이므로 여러 숫자가 중복해서 나온다는 의미이다!

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)는 쓰지 않는걸로 ㅠ…

Tags:

Categories:

Updated: