반응형
- 첫 풀이 및 정답풀이
이 문제의 경우 입력 데이터를 어떻게 변형시킬 수 있을지 고민하다가, 1. 입력 데이터를 각 자릿수 별로 추출한다. 2. 추출한 자릿수들을 선형 자료구조에 저장해 3. 역순으로 정렬시킨다. 4. 내림차순으로 정렬된 자릿수들을 문자열로 붙여나간다.라는 생각을 토대로 코드를 작성해 보았다. 또한, 문제에서 새로운 정수를 리턴하는 것이 결괏값이기 때문에 그에 맞게 데이터 타입 역시 바꾸어 주어야 한다.
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public long solution(long n) {
// 1. 각 자릿수를 저장할 ArrayList 및 문자열 변수.
ArrayList<Long> arr = new ArrayList<>();
String answer ="";
// 2. 각 자릿수를 추출해 ArrayList의 원소로 삽입.
while(n != 0){
arr.add(n % 10);
n/=10;
}
// 3. Collections의 sort(), reverseOrder() 메소드를 이용해 역순으로 정렬한다.
Collections.sort(arr,Collections.reverseOrder());
// 4. ArrayList의 원소들을 문자열에 붙여준다.
for(long x : arr){
answer+=String.valueOf(x);
}
// 5. 정수로 반환하기 위해 Long.parseLong()으로 문자열을 변환시킨다.
return Long.parseLong(answer);
}
}
다른 풀이 방법이 있을까 하고 검색해보았지만, 대다수 이와 비슷하게 푼 것 같다.
반응형