이유's STUDY/알고리즘 문제풀이

[ 백준 ] 2751번 - 수 정렬하기2 / [Java 이용 ]

살아가는 이유_EU 2021. 7. 25. 19:29
728x90
반응형

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();

        int N = sc.nextInt();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            int T = sc.nextInt();
            // 저장 완료
            list.add(T);
        }
        // Arrays 의 sort 로 이용할 경우 시간 복잡도 오류
        //  평균 시간복잡도가 O(nlogn) 이지만 최악의 경우 시간 복잡도 O(n2)
//        Arrays.sort(arr);

        Collections.sort(list);
        for(int n:list) {
//            System.out.println(n);
            sb.append(n).append('\n');
        }
        System.out.println(sb);
    }
}

 

주의해야할 점 :

 

시간 제한이 있기 때문에 이를 Arrays.Sort 로 이용할 경우에는 평소에는 시간복잡도가  O(nlogn)  이지만 최악의 경우 O(n2) 로 쓰이기 되문에 시간 초과가 남. 

- dual-pivot Quicksort 알고리즘을 사용

 

따라서 Collections.sort() 을 이용. 이는 합병 및 삽입 알고리즘을 혼합으로 쓴 hrbrid sorting Algorithm 인데 두 가지의 최선만 짬뽕해서 가져온 알고리즘이다.! 

 

참고

https://st-lab.tistory.com/106 

 

[백준] 2751번 : 수 정렬하기 2 - JAVA [자바]

www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이..

st-lab.tistory.com

 

728x90
반응형