BOJ[10989] - 수 정렬하기3 by Java
수 정렬하기 3
문제
언어
- Java
문제 풀이 step 1
Arrays.sort()를 이용합니다.- 또는 CountingSort(계수 정렬)을 이용합니다.
소스 코드
Arrays.sort()이용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i=0; i<n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
for(int i=0; i<n; i++) {
sb.append(arr[i]+"\n");
}
System.out.println(sb);
}
}
- CountingSort(계수 정렬) 이용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] countingArr = new int[10001];
for(int i=0; i<n; i++) {
int j = Integer.parseInt(br.readLine());
countingArr[j]++;
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<10001; i++) {
if(countingArr[i] == 0) continue;
while(countingArr[i]-- > 0) {
sb.append(i+"\n");
}
}
System.out.println(sb);
}
}
후기
- JavaScript로 CountingSort와 RadixSort을 이용해서 풀어봤지만, 메모리 초과가 나서 Java로 풀게되었습니다.
- 특정 조건에서는
Arrays.sort()보다는 CountingSort가 더 빠른 것을 확인할 수 있었습니다.