알고리즘/백준

[백준 알고리즘] 10989번: 수 정렬하기 3 (파이썬 / Python)

gyujh 2022. 8. 11. 23:05
문제

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

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

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

예제 입력
10
5
2
3
1
4
2
3
5
1
7
예제 출력
1
1
2
2
3
3
4
5
5
7

문제 접근

N의 개수의 범위가 (1 ≤ N ≤ 10,000,000)이므로, 단순히 정렬을 하면 시간초과가 날 것이다. 10000개의 배열을 만들고 들어오는 값만큼 1씩 해당 인덱스에 더해주면 된다.

정답 코드
import sys

n = int(sys.stdin.readline())
a = [0] * 10001 # 문제에서 주어진 범위인 10000개만큼의 0으로 이루어진 배열을 만들어 놓는다

for i in range(n):
    new = int(sys.stdin.readline())
    a[new] += 1

for i in range(len(a)):
    if a[i]:
        for _ in range(a[i]):
            print(i)

출력 부분에서, a[i]만큼 반복하면서 print해야 들어온 개수만큼 출력할 수 있다.


 

10989번: 수 정렬하기 3

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

www.acmicpc.net