컴퓨터는 잘못이 없다..

[알고리즘]BOJ_10989_수 정렬하기3_계수정렬사용(파이썬 sys라이브러리 사용해서 입력받기) 본문

공부/알고리즘(파이썬)

[알고리즘]BOJ_10989_수 정렬하기3_계수정렬사용(파이썬 sys라이브러리 사용해서 입력받기)

도토리까꿍v 2021. 1. 15. 23:25
Contents 접기

[문제링크]

10989번: 수 정렬하기 3 (acmicpc.net)

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

[제한]

[문제] 
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

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

[출력] 
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

[예제 입력 1]  

10
5
2
3
1
4
2
3
5
1
7

 

[예제 출력 1] 
1
1
2
2
3
3
4
5
5
7

 

[답안1]

import sys
n=int(sys.stdin.readline())

#data에서 가장 큰 수만큼 방을 만들고 0으로 초기화해준다.
arr=[0]*10001
for _ in range(n) :
    data = int(sys.stdin.readline())
    arr[data] += 1
    #arr[int(sys.stdin.readline())] += 1 위의 두 줄은 한줄로 줄일 수 있다.

#arr에 저장된 수만큼 값을 출력한다.
for i in range(10001) :
    if arr[i] != 0:
        for _ in range(arr[i]) :
            print(i)



▲답안1 설명 

Python3로 채점함!, 계수정렬을 이용해서 풀어보았다. 

 

Comments