빠에야는 개발중

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

공부/알고리즘 문제

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

빠에야좋아 2018. 3. 4. 13:18

reverseInt 메소드는 int형 n을 매개변수로 입력받습니다.
n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 양의 정수입니다.



int형 정수의 각 자릿수를 쪼개는 것이 포인트라고 할 수 있다.

각각의 자릿수를 배열에 담아 내림차순 정렬하고, 다시 정수로 만들어주었다.

각 자릿수를 10 지수승 단위로 받으려고 했다가 꼬여서 단순히 일의 자리의 수를 가져오고 10씩 나누는 방법을 사용했다.

이 방법이 바로 생각나지 않아서 꽤 고민을 했다. 자괴감 타임...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Arrays;
 
public class ReverseInt {
    public int reverseInt(int n){
        int length=0;
        int temp=n;
        int result=0;
        while(temp!=0) {
            temp/=10;
            length++;
        }
    
        int arr[] = new int[length];
        for(int i = 0; i<arr.length;i++) {
            arr[i] = n%10;
            n/=10;
        }
        
        Arrays.sort(arr);
        for (int i = 0; i < arr.length/2; i++) {
            int temp1;
            temp1 = arr[i];
            arr[i] = arr[(arr.length - 1- i];
            arr[(arr.length - 1- i] = temp1;
        }
        
        for(int i = 0; i<arr.length;i++) {
            result += arr[arr.length-1-i]*(int) Math.pow(10,i);
        }
        
        return result;
    }
  
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        ReverseInt ri = new ReverseInt();
        System.out.println(ri.reverseInt(118372));
    }
}
cs

'공부 > 알고리즘 문제' 카테고리의 다른 글

시저 암호  (0) 2018.03.05
행렬의 곱셈  (0) 2018.03.04
최솟값 만들기  (0) 2018.03.04
소수의 개수 구하기  (0) 2018.02.26
행렬의 덧셈  (0) 2018.02.23
Comments