본문 바로가기

프로그래머스

Lv1 정수 내림차순으로 배치하기

문제요약

n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해라

n이 118372면 873211을 리턴

 

입출력

n return
118372 873211

 

문제풀이

 

버블 정렬을 이용한 풀이

import java.util.*;
class Solution {
    public long solution(long n) {
        long answer = 0;
        
        String str = String.valueOf(n);
        Long[] arr = new Long[str.length()];
        
        for(int i=0; i<str.length(); i++){
            arr[i] = Long.parseLong(String.valueOf(str.charAt(i)));
        }
        
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr.length -1 -i; j++){
                if(arr[j] < arr[j+1]){
                    long temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        
        String str1 = "";
        for(int y=0; y<arr.length; y++){
            str1 += ""+arr[y]; 
        }
        
        answer = Long.parseLong(str1);
        
        return answer;
    }
}

 

 

reverse 메서드를 이용한 풀이

import java.util.*;
class Solution {
    public long solution(long n) {
        long answer = 0;
        
        String str = String.valueOf(n);
        String[] arr = new String[str.length()];
        
        for(int i=0; i<str.length(); i++){
            arr[i] = String.valueOf(str.charAt(i));
        }
        
        Arrays.sort(arr);
        
        str = "";
        for(int j=0; j<arr.length; j++){
            str += arr[j];
        }
        
        StringBuffer buffer = new StringBuffer(str);
        buffer.reverse();
        
        answer = Long.parseLong(buffer.toString());
        
        return answer;
    }
}