문제 설명
함수 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
'Algorithm > Programmers(Java)' 카테고리의 다른 글
| [프로그래머스/Lv.1] 콜라츠 추측 (0) | 2022.12.13 |
|---|---|
| [프로그래머스/Lv.1] 두 정수 사이의 합 (0) | 2022.12.09 |
| [프로그래머스/Lv.1] 하샤드 수 (0) | 2022.12.09 |
| [프로그래머스/Lv.1] 가장 가까운 같은 글자 (0) | 2022.12.08 |
| [프로그래머스/Lv.1] x만큼 간격이 있는 n개의 숫자 (0) | 2022.12.08 |