📘문제 설명
함수 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 나와야 해요)
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 12 - 프로그래머스 기출 문제(JAVA) / 두 정수 사이의 합 / Day 11 (2) | 2025.07.10 |
|---|---|
| [Java] 코딩 11 - 프로그래머스 기출 문제(JAVA) / 하샤드 수 / Day 10 (0) | 2025.07.09 |
| [Java] 코딩 9 - 프로그래머스 기출 문제(JAVA) / 정수 제곱근 판별 / Day 8 (1) | 2025.07.07 |
| [Java] 코딩 8 - 프로그래머스 기출 문제(JAVA) / 문자열을 정수로 만들기 / Day 7 (0) | 2025.07.06 |
| [Java] 코딩 7 - 프로그래머스 기출 문제(JAVA) / 자연수 뒤집어 배열로 만들기 / Day 6 (0) | 2025.07.05 |