728x90
반응형
- 정수 내림차순으로 배치하기
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건- n은 1이상 8000000000 이하인 자연수입니다.
n | return |
118372 | 873211 |
1) 배열의 정렬을 이용한 풀이
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
long answer = 0;
String str=Long.toString(n);
char[] arr=str.toCharArray();
//long을 String으로 String을 char[]배열로
Arrays.sort(arr);
//char[]을 정렬
String newstr=new String();
for(int i=arr.length-1;i>=0;i--){
newstr+=arr[i];
}
//정렬한 배열을 String으로 만든다.
answer=Long.parseLong(newstr);
//String을 다시 long으로 변환
return answer;
}
}
2) 반복문을 이용해 직접 정렬을 한 풀이
class Solution {
public long solution(long n) {
long answer = 0;
String str=Long.toString(n);
char[] arr=str.toCharArray();
//long을 String으로 String을 char[]배열로
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length;j++){
if(arr[j]<arr[i]){
char tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
String newstr=new String();
for(int i=0;i<arr.length;i++){
newstr+=arr[i];
}
//정렬한 배열을 String으로 만든다.
answer=Long.parseLong(newstr);
//String을 다시 long으로 변환
return answer;
}
}
+) 세련된 풀이
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String[] list=String.valueOf(n).split("");
//""로 분리 가능하므로, ""로 한글자씩 분리 후 String배열에 넣는다.
//Long to String[] 변환 -> String.valueOf(str);
Arrays.sort(list);
//배열의 정렬
StringBuilder sb = new StringBuilder();
for(String aList:list){
sb.append(aList);
}
//StringBuilder에 하나씩 넣는다.
return Long.parseLong(sb.reverse().toString());
//StringBuilder to String : toString();
//String to Long : Long.parseLong(str);
}
}
728x90
반응형
'Java > Java 알고리즘 프로그래머스' 카테고리의 다른 글
[프로그래머스-LEVEL 1] 14. 자릿수 더하기 (0) | 2022.05.08 |
---|---|
[프로그래머스-LEVEL 1] 13. 자연수 뒤집어 배열로 만들기 (0) | 2022.05.08 |
[프로그래머스-LEVEL 1] 11. 정수 제곱근 판별 (0) | 2022.05.08 |
[프로그래머스-LEVEL 1] 10. 제일 작은 수 제거하기 (0) | 2022.05.07 |
[프로그래머스-LEVEL 1] 9. 짝수와 홀수 (0) | 2022.05.07 |