https://programmers.co.kr/learn/courses/30/lessons/12933
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 |