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

 

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

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

programmers.co.kr

 

 

문제 분석

- while문을 통해 함수를 계속 10으로 나누고 나머지를 사용하여 자리수를 구한다.

- 구한 자리수는 리스트에 추가한다.

- 추가한 리스트의 수들을 Collections의 sort를 사용하여 정렬한다.

- 정렬한 리스트들의 수를 Math.pow를 활용하여 각 자리수에 해당하는 10의 제곱값을 곱해주고, 자리수의 값을 정답에 추가한다.

 

 

문제 풀이

1. 각 자리의 숫자를 관리할 리스트를 생성한다.

2. while문을 통해 각 자리수를 구하고 해당 자리수를 list에 추가한다.

3. 만약 더이상 더할 자리수가 없다면 while문을 종료한다.

4. 자리수를 구해서 sort로 정렬하여 리스트를 오름차순의 순서로 만든다.

5. 오름차순으로 만든 리스트를 앞에서부터 10의 각 자리의 제곱만큼 곱하여 내림차순으로 만든 후 answer에 추가한다.

import java.util.*;
import java.lang.Math;

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        ArrayList<Integer> list = new ArrayList<>();
    
        while(true){
            if(n<=0){
                break;
            }
            list.add((int)(n % 10));
            n /= 10;
        }
        Collections.sort(list);
        
        for(int i=0;i<list.size();i++){
            answer += list.get(i)*Math.pow(10, i);
        }
        
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm