[프로그래머스/Java] 정수 내림차순으로 배치하기

김소연·2026년 4월 30일
  • 문제: 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

    1. 문자열로 바꿔서 한 글자씩 꺼내고, 큰 숫자부터 직접 붙이기

    class Solution {
        public long solution(long n) {
            String str = String.valueOf(n);
            String answer = "";
    
            for (int i = 9; i >= 0; i--) {
                for (int j = 0; j < str.length(); j++) {
                    if (str.charAt(j) - '0' == i) {
                        answer += i;
                    }
                }
            }
    
            return Long.parseLong(answer);
        }
    }

    n = 118372 라면,

    str = "118372"

    이제 숫자를 9부터 0까지 찾아서 순서대로 붙인다.

    for (int i = 9; i >= 0; i--)

    2. 문자열로 바꾼 뒤 정렬하기

    import java.util.Arrays;
    
    class Solution {
        public long solution(long n) {
            String str = String.valueOf(n);
    
            char[] arr = str.toCharArray();
    
            Arrays.sort(arr);
    
            StringBuilder sb = new StringBuilder(new String(arr));
            sb.reverse();
    
            return Long.parseLong(sb.toString());
        }
    }

    문자열을 문자 배열로 바꾼다

    char[] arr = str.toCharArray(); // ['1', '1', '8', '3', '7', '2']

    그리고 정렬한다. (기본 정렬은 오름차순)

    Arrays.sort(arr);

    큰 수부터 작은 수 순서로 정렬하려면 뒤집는다

    StringBuilder sb = new StringBuilder(new String(arr));
    sb.reverse();

0개의 댓글