[백준 / 정렬] 수 정렬하기2 (java)

sbin·2024년 9월 10일

코테공부

목록 보기
4/15

문제 보기

문제

문제풀이

1. List 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
        List<Integer> list = new ArrayList<>();

        for(int i = 0; i<n; i++) {
            int num = Integer.parseInt(br.readLine());
            list.add(num);
        }
        Collections.sort(list);
        for(Integer a : list) System.out.println(a);
    }
}

2. 배열 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

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);
        for(int a : arr) System.out.println(a);
    }
}

성능 검사

O(nlogn)

풀이 방식

입력받은 원소들을 리스트 혹은 배열에 담고 나서,
sort 정렬 메서드를 통해 오름차순 정렬 후 차례대로 원소를 출력한다.

🌟 정렬 수행 메서드 Collections.sort() , Arrays.sort()

Collections.sort() , Arrays.sort() 둘 다 Java에서 수행하는 메서드이지만, 차이점이 있다. 각각의 특징과 차이를 정리하겠다.

1. 적용 대상

  • Collections.sort() : List와 같은 컬렉션(Collection) 객체를 정렬하는 데 사용된다.
  • Arrays.sort() : 배열(Array)를 정렬하는 데 사용된다.

2. 정렬 알고리즘

  • Collections.sort() : 내부적으로 List의 요소를 배열로 변환 후, Arrays.sort() 메서드를 호출하여 정렬한다.
  • Arrays.sort() : 참조타입 배열은 Timesort 알고리즘을, 기본 타입 배열은 Dual-Pivot Quicksort 알고리즘을 사용한다.

3. Null 허용 여부

  • Collections.sort() : 정렬하려는 리스트에 null 값이 포함되어 있으면 NullPointerException을 발생시킨다.
  • Arrays.sort() : 참조타입 배열은 null 값이 포함된 경우에 NullPointerException이 발생하고, 기본 타입 배열에는 null이 포함될 수 없기에 발생하지 않는다.

4. 속도

Collections.sort()는 내부적으로 배열로 변환 후 다시 리스트로 변환하는 과정이 포함되었기 때문에, 배열을 직접 정렬하는 Arrays.sort()가 약간 더 빠르다.

0개의 댓글