https://programmers.co.kr/learn/courses/30/lessons/12933
문제 분석
- 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;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 자리수 더하기 (0) | 2022.01.23 |
---|---|
programmers 자연수 뒤집어 배열로 만들기 (0) | 2022.01.23 |
programmers 정수 제곱근 판별 (0) | 2022.01.16 |
programmers 제일 작은 수 제거하기 (0) | 2022.01.16 |
programmers 짝수와 홀수 (0) | 2022.01.16 |