
https://school.programmers.co.kr/learn/courses/30/lessons/12932?language=java
class Solution {
public int[] solution(long n) {
String stringNum = String.valueOf(n);
Integer[] tempArray = new Integer[stringNum.length()];
int[] answer = new int[stringNum.length()];
for(int i = 0; i < stringNum.length(); i++) {
char c = stringNum.charAt(i);
Integer number = Character.getNumericValue(c);
tempArray[i] = number;
}
Arrays.sort(tempArray, Collections.reverseOrder());
for(int i = 0; i < tempArray.length; i++) {
answer[i] = tempArray[i]; // 오토 언박싱을 통해 Integer를 int로 변환
}
return answer;
}
}
샘플 케이스는 통과했지만, 테스트 케이스들을 통과하지 못함
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(long n) {
// Long 12345 -> String "12345"
String str = Long.toString(n);
// String reversed = "54321"
String reversed = new StringBuilder(str).reverse().toString();
// char[] arr = ['5','4','3','2','1']
char[] arr = reversed.toCharArray();
int[] result = new int[arr.length];
// char - '0' = int
for (int i = 0; i < result.length; i++) {
result[i] = arr[i] - '0';
}
return result;
}
}
숫자 뒤집기: 숫자의 순서를 역순으로 만든다.
예를 들어 숫자 12030을 뒤집은 결과는 03021이다.
내림차순 정렬: 숫자의 크기가 큰 순서대로 정렬한다.
예를 들어 숫자 12030을 내림차순 정렬한 결과는 32100이다.
for(int i = 0; i < tempArray.length; i++) {
answer[i] = tempArray[i]; // 오토 언박싱을 통해 Integer를 int로 변환
}
Integer로 int로 변환하는 것은 그냥 대입하면 된다. 이를 오토 언박싱이라고 한다.
String reversed = new StringBuilder(str).reverse().toString();
a. StringBuilder를 선언 후 괄호에 str를 넣는다.
b. 메소드 체이닝으로 reverse()로 호출하여 뒤집는다.
c. toString()으로 String으로 변환한다.
반복문에선 length()를 괄호를 빼서 사용한다.
Character - '0' 을 하면 int가 된다.