[ALGORITHM]PROGRAMMERS/정수내림차순배치하기
문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n
은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
---|---|
118372 | 873211 |
코드
import java.util.Arrays;
class Solution {
public long solution(long n) {
long answer = 0;
String str = String.valueOf(n);
int[] arr = new int[str.length()];
for (int i = 0; i < str.length(); i++){
arr[i] = str.charAt(i)-'0';
}
Arrays.sort(arr);
for (int i = arr.length-1 ; i >= 0; i--){
answer *= 10;
answer += arr[i];
}
return answer;
}
}
-
먼저 문자열의 숫자들을 배열에 넣어주었다 👉 숫자들을 정렬해주기 위해
-
다음 배열을 Arrays.sort를 이용하여 정렬해주었다.
-
다음 answer에 *10씩 해가면서 가장 큰수부터 더해 갔다.
즉, 배열에 873211이 있으면
0*10 + 8 = 8
8*10 + 7 = 87
87 * 10 + 3 = 873
비고
문제 : https://programmers.co.kr/learn/courses/30/lessons/12933