728x90
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/10989
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제
# input
10
5
2
3
1
4
2
3
5
1
7
# output
1
1
2
2
3
3
4
5
5
7
문제 풀이
import sys
n = int(sys.stdin.readline())
num_list = [0] * 10001
for _ in range(n):
num_list[int(sys.stdin.readline())] += 1
for i in range(10001):
if num_list[i] != 0:
for j in range(num_list[i]):
print(i)
리스트를 만들고 오름차순으로 정렬할 경우 메모리 초과로 오답 처리되는 문제입니다.
해서 입력값의 최대값인 *10,000의 길이를 가진 리스트를 선언했고, 입력값과 같은 인덱스에 1을 더해주었습니다.
* 인덱스에 추가적인 계산을 하지 않도록 리스트를 10,001로 선언하였습니다
입력이 끝난 후 0이 아닌 인덱스를 찾아 해당 인덱스를 출력하면 오름 차순으로 정렬한 값을 출력할 수 있습니다.
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90