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한다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
제일 작은 수 제거하기(JAVA) (0) | 2022.01.19 |
---|---|
정수 제곱근 판별(JAVA) (0) | 2022.01.19 |
자연수 뒤집어 배열로 만들기(JAVA) (0) | 2022.01.18 |
자릿수 더하기(JAVA) (0) | 2022.01.18 |
이상한 문자 만들기(JAVA) (0) | 2022.01.18 |