[ Lv.1 ] - 정수 내림차순으로 배치하기

leeda06·2023년 5월 24일
0

코딩테스트

목록 보기
40/51

문제 설명

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

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

내 코드

class Solution {
    public long solution(long n) {
        String num = Long.toString(n);
        char[] digits = num.toCharArray();
        
        for (int i = 0; i < digits.length - 1; i++) {
            for (int j = i + 1; j < digits.length; j++) {
                if (digits[i] < digits[j]) {
                    char temp = digits[i];
                    digits[i] = digits[j];
                    digits[j] = temp;
                }
            }
        }
        
        return Long.parseLong(new String(digits));
    }
}

설명

내장함수

변수.toCharArray()

  • String타입의 변수를 char 타입으로 변환시키는 내장함수

Long.toString(변수)

  • long타입의 변수를 String 타입으로 변환시키는 내장함수

Long.parseLong(변수)

  • String타입의 변수를 Long 타입으로 변환시키는 내장함수

new String(변수)

  • String타입의 변수를 long 타입으로 변환시키는 내장함수

전체

  • num 변수에 입력된 수 n을 문자열로 변환하여 저장합니다.
  • digits 변수에 num 문자열을 문자 배열로 변환하여 저장합니다.
  • 첫 번째 반복문에서는 i를 0부터 digits.length - 2까지 반복합니다.
    - -1은 두 자릿수를 비교하기 위함입니다.
  • 두 번째 반복문에서는 ji + 1부터 digits.length - 1까지 반복합니다.
    - i 이후의 자릿수들과 비교하기 위함입니다.)
  • 현재 i번째 자릿수와 j번째 자릿수를 비교하여, i번째 자릿수가 작은 경우 두 자릿수를 교환합니다.
  • 위의 과정을 반복하여 digits 배열을 큰 순서로 정렬합니다.
  • 정렬된 digits 배열을 문자열로 변환한 뒤 Long.parseLong()을 사용하여 해당 문자열을 long 타입으로 변환하여 반환합니다.
profile
웹솔루션과

0개의 댓글