Algorithm/Online judge

[백준] 10989번 > 수 정렬하기 3

민철킹 2021. 1. 27. 15:58

www.acmicpc.net/problem/10989

 

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

 


풀이

 

일단, input() 대신 sys을 import하여 readline을 통해 값을 입력받아야한다.

그리고 append를 통해 값을 저장하는 것이아니라 "이 수는 10,000보다 작거나 같은 자연수이다."라는 문제의 조건을 활용하여 만약 10이라는 값이 들어오면 9번째 index의 값에 +1을 해주는 형식이다.

같은 값이 두 번이상 들어와있을 수도 있기 때문에 출력을 할때 *numbers[i]를 해준다.

이렇게 인덱스를 활용하여 정렬하는 방법도 있다는 것을 배울 수 있었다.

import sys
n = int(sys.stdin.readline())
numbers = [0 for _ in range(10000)]
for _ in range(n):
    numbers[int(sys.stdin.readline())-1] += 1
for i in range(10000):
    if numbers[i] > 0:
        sys.stdout.write((str(i+1) +'\n')*numbers[i])
반응형

'Algorithm > Online judge' 카테고리의 다른 글

[백준] 1427번 > 소트인사이드  (0) 2021.01.27
[백준] 2108번 > 통계학  (0) 2021.01.27
[백준] 2751 > 수 정렬하기 2  (0) 2021.01.27
[백준] 2750번 > 수 정렬하기  (0) 2021.01.27
[백준] 1436번 > 영화감독 숌  (0) 2021.01.27