Java

프로그래머스 1단계 해설: 정수의 정렬

HappinessChung 2019. 7. 23. 15:51
반응형

 

제: 

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 

예를들어 n이 118372면 873211을 리턴하면 됩니다.

 

제한 조건 : n은 1이상 8000000000 이하인 자연수입니다.

 

해답코드

class Solution {
  public long solution(long n) {
      long answer = 0;
      int length = (int)(Math.log10(n) + 1);
      long[] arr = new long[length];
      
      for(int i = 0; i < length ; i++){
          arr[i] = n%10;
          n /= 10;
      }
      for(int i = 0; i < arr.length ; i++)
          for(int k= i+1; k<arr.length ; k++){
              if(arr[i]<arr[k]){
                  long tempt = 0;
                  tempt = arr[i];
                  arr[i] = arr[k];
                  arr[k] = tempt;                
              }                                            
          }      
      long ten = 1;
      for(int j = length-1; j>=0 ; j--){
          
          
          answer += arr[j] *ten;
          ten *=10;
      }      
      return answer;
  }
}

 

코드해설:

  • answer: 원래 자연수를 각 자리 수가 큰 순서대로 재배열 한 것
  • length: 입력받은 자연수의 자릿수
  • 배열 arr에 각 자리수를 따로따로 요소로 저장하고 이의 크기를 tempt를 사용하여 비교한후 
  • 크기가 큰 수를 앞으로 빼는 방식을 사용한다.
  • 이렇게 정렬한 배열의 요소에 다시 10,100,100 등을 곱해서 answer에 더해준다.
반응형