본문 바로가기

알고리즘/백준

[백준] 2750 - 수 정렬하기 (JAVA/ 자바)

반응형

2750번 문제

 

java.util.Arrays 의 sort() 함수를 이용해서 간단하게 풀었다.

 

Scanner를 이용한 방법

import java.util.Arrays;
import java.util.Scanner;

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

    int N = sc.nextInt();
    int[] list = new int[N];

    for(int i=0; i<N; i++){
        list[i] = sc.nextInt();
    }
    for(int j=0; j<N; j++){
        Arrays.sort(list);
        System.out.println(list[j]);
    }
    sc.close();
    }
}

 

 

BufferedReader를 이용한 방법

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[] list = new int[N];

    for(int i=0; i<N; i++){
        list[i] = Integer.parseInt(br.readLine());
    }
    for(int j=0; j<N; j++){
        Arrays.sort(list);
        System.out.println(list[j]);
    }
    br.close();
    }
}

 

📖 Array.Sort()


 

 

https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Arrays.html#sort(byte%5B%5D)

 

Arrays (Java SE 22 & JDK 22)

JavaScript is disabled on your browser. Method Summary All MethodsStatic MethodsConcrete Methods Returns a fixed-size list backed by the specified array. static int Searches the specified array of bytes for the specified value using the binary search algor

docs.oracle.com

Arrays.sort()는 Dual-Pivot Quicksort 알고리즘을 사용한다.

위 사진을 보면 Arrays.sort() 는 다양한 타입들에 대한 오름차순 정렬을 해준다는 것을 알 수 있다.

또한, 특정 인덱스 범위내에서 정렬하는 것도 가능하다. Arrays.sort(기본타입[], int fromIndex, int toIndex)는 인덱스 범위 내에서 정렬을 한다.

그 중 맨 아래의 두 함수는 내림차순도 가능하다.

위는 시작 인덱스와 끝 인덱스 사이를 사용자가 지정한 Comparator 에 따라 정렬해줄 수 있고, 아래는 전체 배열을 사용자가 지정한 Comparator에 따라 정렬해준다.

 

예시)

import java.util.Arrays;
import java.util.Collections;

public class Main{
public static void main(String[] args){

    int[] list = {1,3,5,4,2};
    int[] list2 = {8,2,4,6,1,3,5,7};
    Integer[] listArr = {1,3,5,4,2};
    
    System.out.print("오름차순 정렬 : " );
    for(int i=0; i<list.length; i++){
        Arrays.sort(list);
        System.out.print (list[i] + " ");
    }
    System.out.println();
    System.out.print("인덱스 범위 내 정렬 : " );
    for(int i=0; i<list2.length; i++){
        Arrays.sort(list2, 0, 5);
        System.out.print (list2[i] + " ");
    }

    System.out.println();

    System.out.print("내림차순 정렬 : " );
    for(int j=0; j<listArr.length; j++){
        Arrays.sort(listArr, Collections.reverseOrder());
        System.out.print (listArr[j] + " ");
    }
    }
}

 

실행 결과)

그 대신 내림차순으로 정렬하려면 기본 타입(int, long 등)이 아닌 Wrapper 클래스(Integer, Long 등)이어야 한다.

 

 

 

물론 Array.sort()를 사용하지 않고 다른 정렬 방법을 통해서도 문제를 풀 수 있다. 그건 우선 공부한 후에 정리할 듯 싶다!

반응형