[프로그래머스 Level_1] - #3

노아·2022년 1월 19일

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

문제설명

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

제한 조건

n은 1이상 8000000000 이하인 자연수입니다.

입출력 예

접근방법)

매개변수 값을 한 자리씩 뽑기 위해 생각한 방법은 2가지 였다

  • while문 안에 몫/나머지 연산으로 자리수를 뽑을건지
  • String으로 변환 후 자리수를 뽑을건지

둘 중에 2번이 코드에서 더 간결할거 같아서 2번을 선택했다.

다음으로 내림차순 정렬을 이중 for문으로 해본 결과,
문제 테스트에는 문제가 없었지만 속도가 느리다는 느낌을 받아서 Java에서 제공하는 메서드를 사용을 했다(Arrays.sort, Collections.reverseOrder())
결과는 확실히 제공하는 메서드가 빨랐다.

전

후

코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
    public long solution(long n) {               
        String str = Long.toString(n);
        Integer [] arr = new Integer[str.length()];
        for(int i = 0 ; i < str.length(); i++)
            arr[i] =  str.charAt(i) - '0'; // String to Int
Arrays.sort(arr,Collections.reverseOrder());    
        str = "";
        for(int i = 0 ; i < arr.length; i++)
            str += arr[i];
        long answer = Long.parseLong(str); // String to Long
        return answer;
    }
}
profile
사이어인 처럼 난관에 부딪힐 때 마다 성장하고 싶은 주니어

0개의 댓글