본문 바로가기

Java/Java 알고리즘 프로그래머스

[프로그래머스-LEVEL 1] 12. 정수 내림차순으로 배치하기

반응형
  • 정수 내림차순으로 배치하기
문제 설명

함수 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);
    }
}
반응형