본문 바로가기

문제 풀이/Programmers

[프로그래머스] 정수 내림차순으로 배치하기

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

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

programmers.co.kr


[풀이]

1. 길이를 구하기 위해 입력받은 정수를 문자열로 만들어준다.

2. 각 자리를 잘라서 배열에 담아준다.

3. 2. 에서 구해진 배열을 오름차순으로 정렬한다.

4. 3. 에서 오름차순으로 정렬된 배열을 역순으로 ans에 추가해준다.

5. 4. 에서 구한 ans를 Long.parseLong()을 사용해서 long형으로 형 변환 후 리턴해준다.

[접근]

1. 입력되는 숫자를 문자로 바꿔 각 자리를 쪼개 준 후 내림차순으로 정렬해서 리턴해주면 되겠다고 생각하였다.

[코드]

import java.util.*;

class Solution {
    public long solution(long n) {
        // 길이를 구하기 쉽게 문자열로 변경
        String str = n + "";
        // 정렬해서 문자열로 만들기 위한 문자열 초기화
        String ans = "";
        // 각 자리를 잘라서 정렬하기 위한 배열
        char[] arr = new char[str.length()];
        
        // 잘라서 배열에 값을 담아주기
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i);
        }
        
        // 오름차순으로 정렬
        Arrays.sort(arr);
        
        // 오름차순 정렬된 것을 뒤에서부터 값을 구해서 내림차순으로 바꿔줌
        for (int i = arr.length - 1; i >= 0; i--) {
            ans += arr[i];
        }
        
        // Long형으로 바꿔서 리턴
        return Long.parseLong(ans);
    }
}