본문 바로가기
백준

[백준] 1427번 : 소트인사이드 – JAVA [자바]

by Hongwoo 2022. 7. 25.
반응형

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

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 1427번 소트인사이드는 실버 5 난이도의 문자열 및 정렬 문제이다. 이 문제에서는 숫자 N이 주어진다. 그리고 이 N의 자릿수들을 내림차순으로 정렬한 뒤에 출력해주기만 하면 된다. 즉, 예를 들어서 2143이 들어오면 4321로 출력해주면 된다.

 

자바에서는 내림차순으로 정렬을 할 때 마찬가지로 Arrays.sort() 함수를 사용하기는 한다. 다만, 매개 변수로 정렬할 배열과 Collections.reverseOrder()를 포함시켜 주어야 한다. 이 Collections.reverseOrder()는 배열을 내림차순으로 정렬하는 역할을 한다.

 

다만, int형 배열을 내림차순으로 정렬을 하려고 하면 다음과 같은 오류가 뜬다.

 

 

즉, java: no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>) 에러가 뜬다. 이 오류가 생기는 이유는 int형 배열로는 Collections.reverseOrder()를 사용할 수 없기 때문이다. 이 에러를 해결하려면 배열을 Integer 형으로 만들어 주면 된다.

 

자세한 코드는 밑에서 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int n = s.length();
        Integer[] arr = new Integer[n];  //내림차순으로 정렬할 배열. int형이 아닌 Integer형으로 선언
        for (int i = 0; i < n; i++) {
            arr[i] = Character.getNumericValue(s.charAt(i));  //배열에 수 저장
        }
        Arrays.sort(arr, Collections.reverseOrder());  //내림차순으로 정렬
        for (int i = 0; i < n; i++) {
            System.out.print(arr[i]);
        }
    }
}

 

 

반응형

댓글