Blog

정수 내림차순으로 배치하기

문제 #

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

  • 제한사항
    • n은 1이상 8000000000 이하인 자연수입니다.
  • 입출력 예
    n return
    118372 873211

나의 풀이 #

import java.util.*;

class Solution {
    public long solution(long n) {
        String answer = "";
        String[] numArr = Long.toString(n).split("");
        Arrays.sort(numArr);
				// Arrays.sort(numArr, Collections.reverseOrder());
					
        
        for(int i = 0; i<numArr.length; i++) {
            answer = numArr[i]+answer;
        }
				// for(int i : numArr) answer=i+answer;

				
    
        return Long.valueOf(answer);
    }
}
  • 정렬시 Collections.reverseOrder()을 이용해 내림차순 정렬 하는 것과 문자열 추가시 answer = numArr[i]+answer; 을 통해 기존 문자열의 앞부분에 추가하는 것은 동일한 결과가 일어난다.
  • 반복문의 경우 향상된 for문을 이용해 간략화 할 수 있다.

다른 사람의 풀이 #

import java.util.*;

class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);

        return Long.parseLong(sb.reverse().toString());
  }
  • StirngBuilder를 이용 하면 n의 수가 커질 수록 효율적이다.

관련개념 학습 #