프로그래머스

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

네스이 2022. 7. 18. 21:12

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

문제 설명

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

문제 풀이

import java.util.*;

class Solution 
{
   public long solution(long n) 
    {
        long answer = 0;
        int digit = 0;
        ArrayList<Long> list = new ArrayList<Long>();
        //n을 10으로 나눈 나머지를 list에 저장
        while(n != 0)
        {
        	list.add(n % 10);
        	n /= 10;
        	digit++;
        }
        //list 내림차순으로 정렬
        list.sort(Collections.reverseOrder());
        while(digit != 0)
        {
        	//answer에 list 0번째부터 size()개수까지  * 10의 (자릿수 - 1) 승을 더한다.
        	answer += list.get(list.size() - digit) * (long)Math.pow(10, digit - 1);
        	digit--; //자릿수 하나씩 낮추기
        }
        
        
        return answer;
    }
}