문제
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
[ 내가 짠 코드 ] - 메모리 초과
n = int(input())
list_1 = []
for i in range(n):
list_1.append(int(input()))
a = len(list_1)
for i in range(n):
for j in range(n):
if list_1[i] < list_1[j]:
list_1[i], list_1[j] = list_1[j], list_1[i]
for n in list_1:
print(n)
[ sys.stdin.readline() 과 반복문에 범위 지정해준 후 풀이 ]
import sys
n = int(input())
list_1 = [0] * 10001
for i in range(n):
a = int(sys.stdin.readline())
list_1[a] = list_1[a] + 1
for i in range(10001):
if list_1[i] != 0:
for j in range(list_1[i]):
print(i)
알았던 내용
문제가 원하는 바를 출력하긴 했으나, 채점 결과 메모리 초과라고 나왔다.
몰랐던 내용
어느 부분에서 메모리를 잡아먹었는지는 잘 모르겠다.
배운 내용
숫자 정렬하는 방법을 알았고, 나아가서는 숫자가 아닌, 문자 정렬, 인구 정렬, 수 정렬, 등등 여러 곳에서 활용할 수 있을 거 같다.