문제
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해야 들어온 개수만큼 출력할 수 있다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 1181번: 단어 정렬 (파이썬 / Python) (0) | 2022.08.13 |
---|---|
[백준 알고리즘] 11653번: 소인수분해 (파이썬 / Python) (0) | 2022.08.13 |
[백준 알고리즘] 11650번: 좌표 정렬하기 (파이썬 / Python) (0) | 2022.08.11 |
[백준 알고리즘] 2941번: 크로아티아 알파벳 (파이썬 / Python) (0) | 2022.08.11 |
[백준 알고리즘] 10773번: 제로 (파이썬 / Python) (0) | 2022.08.11 |