티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

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

programmers.co.kr

 

[문제 풀이]

 

1. https://www.ddu0422.dev/43와 비슷하다.

2. 각 자릿수를 구한다.

3. 배열을 오름차순으로 정렬한다.

4. 역순으로 숫자를 더한다. [소스 코드 1]

  4-1. 기존의 값에 10을 곱한다.

  4-2. 다음수를 더한다.

5. 스트림을 이용해서 좀 더 간단히 풀 수 있다. [소스 코드 2]

 

[소스 코드]

 

import java.util.Arrays;

public class PlacingIntegersInDescendingOrder {
    public static void main(String[] args) {
        long n = 118372;

        System.out.println(solution(n));
    }

    private static long solution(long n) {
        long answer = 0;
        int[] digits = new int[String.valueOf(n).length()];

        for (int i = 0; n != 0; i++) {
            digits[i] = (int) (n % 10);
            n /= 10;
        }

        Arrays.sort(digits);

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

        return answer;
    }
}

[소스 코드 1]

 

import java.util.Arrays;
import java.util.Comparator;

public class PlacingIntegersInDescendingOrder {
    public static void main(String[] args) {
        long n = 118372;

        System.out.println(solution(n));
    }

    private static long solution(long n) {
        String[] numbers = String.valueOf(n).split("");

        return Long.parseLong(
                Arrays.stream(numbers)
                        .sorted(Comparator.reverseOrder())
                        .reduce("", (a, b) -> a + b)
        );
    }
}
 

[소스 코드 2]

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함