코딩테스트/Java

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

코딩로봇 2025. 3. 4. 16:30

문제

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

 

 

✏️ 내 풀이 

class Solution {
    public long solution(long n) {
        long answer = 0;
        int index = String.valueOf(n).length();
        int[] num = new int[index];
        
        // 숫자를 배열에 저장
        for (int i = 0; i < index; i++) {
            num[i] = (int) (n % 10);
            n /= 10;
        }
        
        // 배열 정렬 (버블 정렬 방식)
        for (int i = 0; i < index - 1; i++) {
            for (int j = 0; j < index - 1 - i; j++) {
                if (num[j] < num[j + 1]) {
                    int temp = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = temp;
                }
            }
        }
        
        // 배열을 다시 숫자로 변환
        for (int i = 0; i < index; i++) {
            answer = answer * 10 + num[i];
        }
        
        return answer;
    }
}

 

버블 정렬 방식을 활용하여 문제를 풀었다.

 

✒️회고

- 간단한 문제처럼 보였지만 막상 코딩을 해보니 일일이 수작업을 해서 그런지 코드가 굉장히 길어졌다 😭 

- 1달뒤에 봐도 쉽게 무슨 코드인지 알 수 있는것이 가독성이 좋은 코드라고 할 수 있다.

그만큼 짧은 시간에 이해할 수 있게 만드는 것도 능력!! 🥇 🥇

- 어떻게 더 짧게 작성할 수 있을지 고민해봐야 겠다