알고리즘

백준 1427 소트인사이드 [JAVA]

경딩 2024. 9. 26. 11:45

https://www.acmicpc.net/problem/1427

 

  • 간단하지만 중요한 기본문제

 

해당 문제는 int 배열을 만들어 오름차순 정렬을 하면된다.

물론 int 배열을 내림차순정렬하여 거꾸로 출력하는 방법도 있지만  오름차순 정렬를 하는 법을 활용해보겠다.


 

  • 방법 1. 오름차순 직접 구현
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

class Main{


    //   소트인사이드  백준 - 1427

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        int[] arr = new int[s.length()];

        int idx =0;
        for(char c : s.toCharArray()){
            arr[idx++] =  c - '0';
        }
        Arrays.sort(arr);

        for(int i=0; i<s.length()/2; i++){
            int tmp = arr[s.length()-i-1];
            arr[s.length()-i-1] = arr[i];
            arr[i] = tmp;
        }

        StringBuilder sb = new StringBuilder();
        for(int n : arr){
            sb.append(n);
        }

        System.out.println(sb);
    }

}

 

 

  • 방법 2.  Collections.reverseOrder() 를 이용한 오름차순 구현
    • Collections.reverseOrder() 는 제네릭 메서드로 설계되어 있습니다. 제네릭 메서드는 참조타입에만 적용될 수 있으며, 기본 타입에는 적용되지않습니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

class Main{


    //   소트인사이드  백준 - 1427

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        Integer[] arr = new Integer[s.length()];

        int idx =0;
        for(char c : s.toCharArray()){
            arr[idx++] =  c - '0';
        }
        Arrays.sort(arr, Collections.reverseOrder());

        StringBuilder sb = new StringBuilder();
        for(int n : arr){
            sb.append(n);
        }

        System.out.println(sb);
    }

}