[2020-11-17] 정수 내림차순으로 배치하기

2020. 11. 17. 17:53코딩테스트

푼 시간 : 30분

언어 : 자바

 


 

programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이

programmers.co.kr

 

역정렬을 하는데 long형이라서 형변환을 하고

Math.pow가 double이었기에 cnt도 형변환을 해야 해서

할것이 매우 많은 문제였다.

 

요새 문자나 숫자 정렬하는

문제를 많이 푸는 것 같다 ㅎㅎㅎ

 

import java.util.*;

class Solution {
    public long solution(long n) {
        long answer = 0;
        int swap=0;
        int[] a=new int[(int)(Math.log10(n)+1)];
        // 정렬 할 배열
        double cnt=Math.pow(10, a.length-1);
        // 10을 제곱한다
        
        for(int i=0; i<a.length; i++){
            a[i]=(int)(n%10);
            n/=10;
        }
        
        Arrays.sort(a);
        // 정렬
        
        for(int i=a.length-1; i>=0; i--){
        // 역정렬을 위해 --
            answer+=(long)(a[i]*cnt);
            // 역정렬을 한다.
            System.out.println(a[i]+" "+cnt);
            cnt/=10;
        }
        
        System.out.println(answer);
        
        return answer;
    }
}