Algorithm/Programmers(Java)

[프로그래머스/Lv.1] 정수 내림차순으로 배치하기

비망노트 2022. 12. 9. 21:59
문제 설명

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

 

제한사항
  • n은 1이상 8000000000 이하인 자연수입니다.

 

입출력 예
n return
118372 873211

 

⭕ 풀이

class Solution {
    public long solution(long num) {
        long answer = 0;
        char[] arr = String.valueOf(num).toCharArray();
        
        for(int i=0;i<arr.length;i++) {
            char temp = arr[i];
            for(int j=i+1;j<arr.length;j++) {
                if(temp<arr[j]) {
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }
        
        for(int i=0;i<arr.length;i++) {
            answer = (answer*10)+(arr[i]-'0');
        }
        return answer;
    }
}

 

✅ 흐름

1. 입력받은 long 타입 변수 num을 char 배열로 만든다

2. 2중for문으로 가장 간단한 정렬방법인 버블정렬을 수행한다

3. return할 long타입 변수 answer에 정렬된 char배열의 각 요소값을 하나씩 더한다

 

 

다른분들의 풀이를 보니 람다식도 사용하고 Arrays.sort나 이런것들도 많이 사용하셨던데

난 이렇다할 방법이 딱히 떠오르지않아서 그냥 기본정렬을 사용했다..

 

 

 

 

-출처

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