"시간 복잡도가 O(nlogn)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 병합 정렬, 힙 정렬 등이 있지만, 어려운 알고리즘이므로 지금은 언어에 내장된 정렬 함수를 쓰는 것을 추천드립니다."
병합 정렬, 힙 정렬은 나중에 공부하고 지금은 설명란의 추천대로 자바 안에 내장된 정렬 함수를 사용해보았다.
Collections.sort : 리스트 정렬로서 다중 정렬에 해당한다.
자바 내장 정렬 중 내가 알고 있는 정렬은 Arrays.sort()와 Collections.sort()이다.
Arrays.sort는 배열을 정렬하는 것이고 Collections.sort는 리스트를 정렬해야한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder st = new StringBuilder();
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> arr = new ArrayList<>();
for(int i=0; i<N; i++)
arr.add(Integer.parseInt(br.readLine()));
Collections.sort(arr);
for(int i=0; i<arr.size(); i++)
st.append(arr.get(i)).append('\n');
System.out.print(st);
}
}
시간을 줄이기 위해서 Scanner보다는 BufferedReader를 사용했다.
그리고 일일히 다 출력하기 보다는 StringBuilder을 이용하여 정렬 결과를 한번에 출력했다.