MancityBallboy 흔적 남기기

(백준)수 정렬하기

문제

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

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다

Solution

N = int(input())

plus_number_cnt = [0] * 1001
minus_number_cnt = [0] * 1001
for _ in range(N):
    num = int(input())
    if num < 0:
        minus_number_cnt[-num] += 1
    else:
        plus_number_cnt[num] += 1

result = 0
for number in range(1000, 0, -1):
    for _ in range(minus_number_cnt[number]):
        print(-number)
for number in range(0, 1001):
    for _ in range(plus_number_cnt[number]):
        print(number)

사실 내장된 sort함수를 이용하면 쉽게 풀 수 있으나 다른 방법으로 풀 수 있을 것 같아서 이와 같은 방법을 채용하였습니다. 수가 -1000 과 1000사이의 수라고 한정 하였을 때만 가능하고 범위가 커지면 성능이 떨어질 것으로 예상됩니다.