View

[Python] Baekjoon 백준 10989번 수 정렬하기 3

 

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

 

import sys

n = int(input())
num = [0 for i in range(10001)]

for i in range(n):
    a = int(sys.stdin.readline())
    num[a] += 1

for i in range(1, 10001):
    if num[i] != 0:
        for j in range(num[i]):
            print(i)

 

이전 수 정렬하기 문제 처럼 sort() 를 이용해서 풀었다가 메모리 초과 났다

 

이번 문제의 한 줄당 입력 최대 값은 "10,000보다 작거나 같은 자연수" 이다

 

미리 10000 까지의 리스트에 0으로 채워 넣는다

 

입력 받은 수를 인덱스로 보고, 값에다가 +1 해준다

이렇게 하면 같은 수 가 들어오면 +1 씩 늘어난다

 

출력할때는 0이 아닌 조건으로 값 만큼 인덱스 숫자를 반복 출력 해 준다

 

반응형
Share Link
reply