주어진 정수 n
의 각 자릿수를 내림차순으로 정렬한 새로운 정수를 반환하는 함수를 작성해 보겠다. 예를 들어, 입력된 정수가 118372
라면, 반환값은 873211
이 되어야 한다.
이 문제를 해결하기 위해 다음과 같은 단계를 수행할 것이다:
n
을 문자열로 변환한다.import java.util.Arrays;
public class Solution {
public long solution(long n) {
// 1. 정수를 문자열로 변환하고 문자 배열로 변환
char[] digits = Long.toString(n).toCharArray();
// 2. 문자 배열을 오름차순으로 정렬
Arrays.sort(digits);
// 3. 정렬된 배열을 역순으로 재배열
StringBuilder sb = new StringBuilder(new String(digits)).reverse();
// 4. 문자열을 다시 정수로 변환하여 반환
return Long.parseLong(sb.toString());
}
}
char[] digits = Long.toString(n).toCharArray();
Long.toString(n)
: 입력받은 정수 n
을 문자열로 변환한다. 예를 들어, n
이 118372
이라면 이 부분의 결과는 "118372"
라는 문자열이 된다..toCharArray()
: 변환된 문자열을 문자 배열로 변환한다. "118372"
문자열은 ['1', '1', '8', '3', '7', '2']
라는 문자 배열로 변환된다.이 과정에서 우리는 정수의 각 자릿수를 개별 문자로 분리하여 배열에 저장하게 된다.
Arrays.sort(digits);
Arrays.sort(digits)
: 자바의 Arrays
클래스에 있는 sort
메서드를 사용하여 문자 배열 digits
를 오름차순으로 정렬한다.['1', '1', '8', '3', '7', '2']
['1', '1', '2', '3', '7', '8']
문자 배열을 오름차순으로 정렬하면 각 문자가 유니코드 순서(즉, 사전순)대로 배열된다.
StringBuilder sb = new StringBuilder(new String(digits)).reverse();
new String(digits)
: 문자 배열 digits
를 문자열로 변환한다. 예를 들어, ['1', '1', '2', '3', '7', '8']
배열은 "112378"
문자열로 변환된다.new StringBuilder(...)
: 변환된 문자열을 StringBuilder
객체로 감싼다. StringBuilder
는 문자열을 조작하기 위한 유용한 클래스다..reverse()
: StringBuilder
객체의 reverse
메서드를 사용하여 문자열을 역순으로 재배열한다. "112378"
문자열은 "873211"
로 역순 정렬된다.StringBuilder
를 사용하면 문자열을 효율적으로 조작할 수 있고, 특히 문자열의 역순 정렬이 간편해진다.
return Long.parseLong(sb.toString());
sb.toString()
: StringBuilder
객체를 다시 문자열로 변환한다. 이 문자열은 이제 내림차순으로 정렬된 상태다.Long.parseLong(...)
: 최종 문자열을 long
타입의 정수로 변환한다. "873211"
문자열은 873211
정수가 된다.이 과정을 통해 최종적으로 내림차순으로 정렬된 자릿수를 가진 새로운 정수를 얻을 수 있다.
import java.util.Arrays;
public class Solution {
public long solution(long n) {
// 1. 정수를 문자열로 변환하고 문자 배열로 변환
char[] digits = Long.toString(n).toCharArray();
// 2. 문자 배열을 오름차순으로 정렬
Arrays.sort(digits);
// 3. 정렬된 배열을 역순으로 재배열
StringBuilder sb = new StringBuilder(new String(digits)).reverse();
// 4. 문자열을 다시 정수로 변환하여 반환
return Long.parseLong(sb.toString());
}
}
이 코드는 주어진 정수 n
의 자릿수를 내림차순으로 정렬한 후 새로운 정수를 반환하는 과정을 구현하고 있다. 각 단계는 간단하지만, 함께 조합하면 강력한 기능을 제공한다. 이 접근 방식은 입력된 정수의 자릿수를 큰 것부터 작은 순서로 재배열하여 새로운 정수를 만드는 데 매우 효율적이다.
아래는 이 함수가 어떻게 동작하는지 예시를 통해 보여주겠다:
n = 118372
["1", "1", "2", "3", "7", "8"]
["8", "7", "3", "2", "1", "1"]
873211
이와 같이, 함수는 주어진 정수의 자릿수를 내림차순으로 정렬한 후 새로운 정수를 반환한다.
자바로 정수의 자릿수를 내림차순으로 정렬하는 방법을 살펴보았다. 간단한 문자열 및 배열 조작을 통해 문제를 쉽게 해결할 수 있었다. 이 접근 방식은 다양한 유사한 문제에서도 응용될 수 있다.
문제 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/12933