본문으로 바로가기

📘문제 설명

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

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 제한조건

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

💡 개념 설명

1️⃣ 숫자 n을 글자로 바꾼다.
숫자는 바로 자리를 바꾸기 어려워서 "123"처럼 글자처럼 바꿔야 한다.

2️⃣ 글자 하나하나를 배열(상자)에 넣는다.
그래야 자리 바꾸기(정렬)를 할 수 있다.

3️⃣ 배열을 큰 숫자부터 작은 숫자 순서로 정렬한다.
예를 들어, [1, 8, 3, 7, 2]  [8, 7, 3, 2, 1]

4️⃣ 정렬된 숫자들을 다시 줄줄이 붙인다.
글자들을 하나로 이어서 "873211"처럼 만든다.

5️⃣ 붙인 글자를 다시 숫자로 바꿔서 리턴한다.
그래야 long 타입 숫자가 된다.


📎 입출력 예시


📎 코드

import java.util.Arrays;             // 배열을 정렬하는 데 필요한 도구를 가져와요
import java.util.Collections;        // 배열을 거꾸로 정렬하는 데 필요한 도구를 가져와요

public class Solution {              // 'Solution'이라는 이름의 새로운 설계도(클래스)를 만들어요

    public long solution(long n) {   // 'solution'이라는 이름의 함수(방법)를 만들었고, 숫자 하나를 받으면 숫자를 돌려줘요
        String s = Long.toString(n); // 숫자 n을 문자로 바꿔서 s에 넣어요 (예: 123 → "123")

        Character[] arr = new Character[s.length()];  // s의 길이만큼 문자를 담을 상자를 만들어요
        for (int i = 0; i < s.length(); i++) {        // 0부터 s 길이까지 하나씩 돌면서
            arr[i] = s.charAt(i);                      // s의 i번째 문자를 arr 배열에 하나씩 넣어요
        }

        Arrays.sort(arr, Collections.reverseOrder()); // 문자가 들어있는 arr 배열을 내림차순으로(큰 숫자부터) 정렬해요

        String result = "";                            // 결과를 저장할 빈 문자열을 만들어요
        for (int i = 0; i < arr.length; i++) {        // 정렬된 문자들을 하나씩
            result += arr[i];                          // result에 차례로 붙여요 (이어 붙이기)
        }

        long answer = Long.parseLong(result);         // 문자열 result를 다시 숫자로 바꿔서 answer에 넣어요
        return answer;                                 // answer 숫자를 돌려줘요 (함수 종료)
    }

    public static void main(String[] args) {         // 프로그램 시작점! main 함수예요
        Solution sol = new Solution();                // Solution 클래스에서 sol이라는 도구를 만들어요
        long n = 118372;                              // 계산할 숫자를 n에 넣어요
        long result = sol.solution(n);                 // sol 도구의 solution 함수를 불러 숫자 n을 보내 결과를 받아요
        System.out.println(result);                    // 결과를 화면에 출력해요 (873211 나와야 해요)
    }
}

 


📎 결과