(백준)수 정렬하기
20 Nov 2020문제
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사이의 수라고 한정 하였을 때만 가능하고 범위가 커지면 성능이 떨어질 것으로 예상됩니다.