문제 3
수 정렬하기 1
길이가 $N$인 정수 수열 $A_1, A_2, \cdots, A_N$이 주어진다.
수열 $A$를 오름차순으로 정렬하여 출력하라.
입력
첫 번째 줄에 정수 $N$이 주어진다. $(1 \le N \le 1\,000)$
두 번째 줄에 $N$개의 정수 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. $(1 \le A_i \le 1\,000)$
출력
첫 번째 줄에 수열 $A$를 오름차순으로 정렬하여 공백으로 구분해 출력한다.
예제 입력 1
5 3 4 2 1 5
예제 출력 1
1 2 3 4 5
공식 해설
오름차순으로 정렬하면 작은 수부터 차례로 출력할 수 있다. 같은 수가 여러 번 주어져도 각각 수열의 원소이므로 중복을 제거하지 않는다.
$N\le1\,000$이므로 $O(N\log(N+1))$ 비교 정렬로 충분하다. 배열을 저장하는 공간복잡도는 $O(N)$이다.
구현 · 언어별 풀이
C++ 구현
C++에서는 vector<int>에 입력을 저장하고 sort(a.begin(), a.end())로 정렬한다. 정렬한 배열을 앞에서부터 공백으로 구분하여 출력한다.
C 구현
int 배열에 값을 저장한 뒤 qsort로 오름차순 정렬한다. 비교 함수는 (a > b) - (a < b)를 반환하도록 작성할 수 있다.
Python 구현
정수 리스트의 sort()를 호출하고 정렬한 값을 순서대로 출력한다.
Java 구현
int[]를 채우고 Arrays.sort(a)를 호출한다.
Rust 구현
Vec<i32>에 저장하고 sort_unstable()을 호출한다. 동일한 값의 원래 순서는 중요하지 않으므로 안정 정렬은 필요 없다. 모든 원소를 출력한다.
JavaScript 구현
입력의 첫 수 $N$을 제외한 수열에 a.sort((x, y) => x - y)를 적용한다. 기본 sort()는 문자열 순서로 비교하므로 숫자 비교 함수를 전달한다. 정렬한 수열은 a.join(' ')으로 출력한다.