▶ 문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터
작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을
리턴하면 됩니다.
★ 풀이방식
sort 메소드와 StringBuilder를 사용.
sort로 배열을 오름차순으로 정렬한 뒤, 반복문과 StringBulder를 이용하여 정렬된 값을 문자열에 담았다.
마지막으로 reverse메소드를 통해 내림차순으로 정렬해주었다.
▶ 소스코드
class Solution {
public long solution(long n) {
long answer = 0;
String[] list = String.valueOf(n).split("");
Arrays.sort(list);
StringBuilder sb = new StringBuilder();
for (int i=0; i<n.length(); i++){
sb.append(list);
}
answer = Long.parseLong(sb.reverse().toString());
return answer;
}
}
- 실행 시 중간 부분에서 오류가 발생한다. 아무래도 n의 길이를 활용해서 for문을 사용한게 문제인거 같아서 추가로 수정해보았다.
▶ 수정된 소스코드
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String[] list = String.valueOf(n).split("");
Arrays.sort(list);
StringBuilder sb = new StringBuilder();
for(String alist : list) {
sb.append(alist);
}
answer = Long.parseLong(sb.reverse().toString());
return answer;
}
}
- for문의 실행 부분을 수정하여 다시 실행하였더니 정상적으로 실행되었다. StringBuilder를 사용했을때 for문의 내용을 다른 식으로 해보았는데 잘 되지는 않았던거 같다.