# BOJ10989 수 정렬하기 3
https://www.acmicpc.net/problem/10989 (opens new window)
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬한다.
WARNING
N의 범위는 1 ~ 10,000,000이다.
# 제출 코드
Arrays
유틸 클래스안에 sort
메소드로 해결하였다.
한 가지 더 고려해야 할 점은 N
은 최대 10,000,000개
가 입력될 수 있기 때문에 BufferedReader
를 활용하여 입력을 처리하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class BOJ10989 {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bufferedReader.readLine());
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
numbers[i] = Integer.parseInt(bufferedReader.readLine());
}
Arrays.sort(numbers);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < n; i++) {
stringBuilder.append(numbers[i]).append("\n");
}
System.out.println(stringBuilder);
}
}
# counting sort
또한 위 문제는 counting sort
로도 해결이 가능하다.
수의 범위는 10,000보다 작거나 같은 자연수 이므로 count를 위한 배열을 활용하여 해결하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ10989 {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bufferedReader.readLine());
int[] count = new int[10_001];
for (int i = 0; i < n; i++) {
count[Integer.parseInt(bufferedReader.readLine())]++;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < count.length; i++) {
for (int j = 0; j < count[i]; j++) {
stringBuilder.append(i).append("\n");
}
}
System.out.println(stringBuilder);
}
}