문제
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 |