처음에는 헷갈렸던 countingsort를 이번 문제를 통해 확실히 이해를 하게되었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class java_io {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
int[] arr = new int[10001];
for(int i =0; i<N; i++) {
arr[Integer.parseInt(br.readLine())]++;
}
br.close();
StringBuilder sb = new StringBuilder();
for(int i =1; i<10001; i++) {
while(arr[i]>0) {
sb.append(i).append('\n');
arr[i]--;
}
}
System.out.println(sb);
}
}
출처 : Stranger's Lab
간단한 것을 이론을 보고 어렵다고 생각했었다. 이전에 아스키코드로 문자에 해당하는 배열을 찾았듯이, 입력받은 수를 배열안에 집어넣고 그 배열의 값을 할당해주면 결국 출력할 때, 값이 들어있는 배열만 차례대로 출력해줘도 순서대로 정렬이 되는 것이다.
역시 처음 이론을 보면 겁부터 먹지만 막상 이해하면 자신감이 생긴다.