Programmers/Lv1

[Programmers] 정수 내림차순으로 배치하기

piedra_de_flor 2023. 1. 19. 21:25

매개변수로 받은 정수를 내림차순으로 정렬하여 다시 출력하는 프로그램

import java.util.*;
class Solution {
    public long solution(long n) {
        long answer = 0; 
        String result = null;     //정렬된 배열을 다시 받아줄 String
        String number = Long.toString(n);   // 매개변수 n을 정렬하기 위해 String으로 변환
        Integer[] array = new Integer[number.length()];
        // String 으로 바뀐 매개변수 n을 정렬시켜줄 배열 선언
        
        for (int i = 0; i < number.length(); i++) {
            String indexNumber = number.substring(i, i+1);
            array[i] = Integer.parseInt(indexNumber);
        }       // 배열에 String으로 바뀐 매개변수 n을 자릿수별로 분류해서 삽입
        
        Arrays.sort(array, Collections.reverseOrder());   //배열을 내림차순 정렬
        
        result = Integer.toString(array[0]);
        for (int j = 1; j < array.length; j++) {
            result += Integer.toString(array[j]);    
        }       //정렬된 배열을 다시 String으로 변환
        
        answer = Long.parseLong(result);        //결과값 String을 Long으로 변환
        
        return answer;
    }
}

 

주어진 정수 n을 내림차순으로 정렬하기 위해서 자릿수 별로 나누어 배열로 변환,

배열을 Arrays.sort를 이용하여 내림차순 정렬

그 후 내림차순 정렬된 배열  →  String  →  Long 으로 변환하여 return

 


Array.sort 를 사용하기 위해 import java.util.*; 사용 ( 원래는 *이 아니라 Collection , Arrays )

 

JAVA 배열 정렬 종류

배열 오름차순 정렬 Arrays.sort(arr)
배열 내림차순 정렬 Arrays.sort(arr, Collections.reverseOrder())
배열 일부분만 오름차순 정렬 Arrays.sort(arr, 시작 index, 정렬할 마지막 index + 1)

객체로 이루어진 배열을 정렬 할 때에는 Comparable 인터페이스를 사용하여 compareTo() 메소드를 오버라이딩하여 정렬

 

 

 

  • compareTo() 메소드의 기본 구성
    •  숫자형 비교일 경우
      • 기준 값과 비교대상이 동일한 값일 경우 0 반환
      • 기준 값이 비교대상 보다 작은 경우 -1 반환
      • 기준 값이 비교대상 보다 작은 경우 1 반환
    • 문자열 비교일 경우
      • 기준 값과 비교대상이 동일한 값일 경우 0 반환
      • 기준 값이 비교대상 보다 작은 경우 음수 반환
      • 기준 값이 비교대상 보다 작은 경우 양수 반환