본문 바로가기
카테고리 없음

[백준 10989번] '케이원' 파이썬(python) 재귀 I 수 정렬하기3

by MD.Kang 2021. 5. 18.

문제

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)
            

 

알았던 내용

문제가 원하는 바를 출력하긴 했으나, 채점 결과 메모리 초과라고 나왔다. 

 

몰랐던 내용

어느 부분에서 메모리를 잡아먹었는지는 잘 모르겠다.

 

배운 내용

숫자 정렬하는 방법을 알았고, 나아가서는 숫자가 아닌, 문자 정렬, 인구 정렬, 수 정렬, 등등 여러 곳에서 활용할 수 있을 거 같다.