본문 바로가기
알고리즘

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

by e-pd 2020. 8. 22.

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

 

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

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

programmers.co.kr

 

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
import java.util.*;
 
class Solution {
    public long solution(long n) {
        long answer = 0;
        
        int i = 0
        List<Long> arr = new ArrayList<>();
        
        while (n != 0) { 
            arr.add(n % 10); 
            n = n / 10
        } 
        
        Collections.sort(arr);
    
        return arrayToLong(arr);
    }
    
        
    private long arrayToLong(List<Long> arr)
    {
        long temp = 0;
        int j = 1;
        for (int i = 0; i < arr.size(); i++) {
            temp += arr.get(i) * j;
            j *= 10;
        }
        return temp;
    }
}
cs

n을 10씩 쪼개서 배열에 담는다.

정렬을 한다. 

3 2 1 4 5 => 1 2 3 4 5

 

이제 역순으로 출력하면 된다.

제일 앞에 1이 있으므로 1을 더하고, 10을 곱한값을 다음에 붙이면 역순이 된다

1 + 20 =21

1 + 20 + 300 = 321

1 + 20 + 300 + 400 = 4321

1 + 20 + 300 + 400 + 5000 = 54321

 

 

p.s. 풀고나서 다른사람 풀이를 한번 확인했는데 파이썬으로 한줄로 푼거 실화인가..

'알고리즘' 카테고리의 다른 글

K th largest element in an Array  (0) 2020.08.25
Unique한 문자인가  (0) 2020.08.24
String to Num  (0) 2020.08.24
완주하지 못한 선수  (0) 2020.08.22
같은 숫자는 싫어  (0) 2020.08.20