수 정렬하기 3
21 June 2019
문제 : https://www.acmicpc.net/problem/10989
이번은 주어진 숫자를 counting sort를 통해 정렬하는 문제를 풀어보도록 하겠습니다.
import java.io.*;
public class Main {
private static int[] countArr = new int[10001];
public static void main(String args[]) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int size = Integer.parseInt(reader.readLine());
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
int value = Integer.parseInt(reader.readLine());
countArr[value]++;
}
for (int i = 0; i < countArr.length; i++) {
if (countArr[i] != 0) {
for (int k = 0; k < countArr[i]; k++) {
writer.write(String.valueOf(i) + "\n");
}
}
}
writer.flush();
writer.close();
reader.close();
}
}
이번 문제에서는 counting sort를 이용해 정렬해보도록 하겠습니다.전체 숫자의 갯수는 많지만, 범위는 10000까지이므로 intArray를 선언하여, 해당 숫자와 동일하면 array의 해당 번째 값을 올려줍니다.
전체가 끝난 후, 값이 0이 아닌 값만 출력해주도록 합니다.