알고리즘/프로그래머스

정수 내림차순으로 배치하기(JAVA)

mrban 2022. 1. 19. 10:43

1. 문제

정수 n을 매개변수로 입력받아 n의 각 자릿수를 내림차순으로 정렬한 새로운 정수를 리턴하시오. 예를들어 n이 118372면 873211을 리턴한다.

 

2. 제한
n은 1이상 8000000000 이하인 자연수입니다.

 

3. 정답
import java.util.Arrays;

class Solution {
    public long solution(long n) {
        long answer = 0;
        int length = (int)(Math.log10(n) + 1);
        int[] result = new int[length];
        int j = length - 1;
        int temp;
        
        for (int i = 0; i < length; i++) {
            result[i] = (int)(n % 10);
            n /= 10;
        }
        
        Arrays.sort(result);

        for (int i = length - 1; i >= 0; i--) {
            answer = answer * 10 + result[i];
        }
        return answer;
    }
}
 

4. 설명

4-1. n의 로그값에 1을 더하여 n의 길이를 구한다.

4-2. n의 길이만큼 for문을 돌면서 n의 일의자리부터 하나씩 떼어 result 배열에 넣어준다.

4-4. Arrays.sort함수를 통해 result 배열을 오름차순으로 정렬한다.

4-5. 정렬된 result 배열의 가장 왼쪽부터 하나씩 answer변수에 넣어준다. 기존의 answer값은 10을 곱함으로써 result 배열의 요소값이 일의자리에 들어올 수 있도록 자리를 마련한다. 예를 들어 answer = 12라면 result의 요소 1을 넣기 위해 answer * 10 + 1 = 121이 될 수 있다. 이를 통해 오름차순 되어있는 result배열을 내림차순으로 정렬된 long형 정수를 만들 수 있다.

4-6. answer값을 return한다.