[Java] 정수 내림차순으로 배치

2025. 2. 4. 10:01·CodingTest/[프로그래머스] 자바

 

 

 

📄 문제 설명

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

제한 조건

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

입출력 예

x return
10 true

 

 

 


 

 

 

🔍  문제 접근 방법

 

단계 1. 정수 n의 자릿수를 문자열로 반환

정수의 자릿수를 하나씩 처리하기 위해 문자열로 반환한다.

long n = 118372;
String str = Long.toString(n); // "118372"

 

 

 

단계 2. 문자열을 문자 배열로 반환

문자열로 반환한 각 자리 수를 쉽게 다루기 위해 문자 배열로 반환한다.
이때, Array 클래스를 import 해주어야 한다.

char[] digits = str.toCharArray(); //['1', '1', '8', '3', '7', '2']

 

 

 

단계 3. 문자 배열을 정렬

Arrays.sort()를 이용하여 정렬한다. 기본적으로 오름차순으로 정렬된다.

Arrays.sort(digits); // ['1', '1', '2', '3', '7', '8']

 

 

 

단계 4. 배열을 뒤집어 내림차순으로 정렬

문자열은 변하지 않기 때문에 문자열을 수정할 때마다 새로운 객체가 생성되지만,
StringBuilder 클래스를 이용하면 동일 객체 내에서 문자열을 수정할 수 있다.

StringBuilder reverse = new StringBuilder(new String(digits)).reverse(); // "873211"

1. new String(digits)

  • 입력 : digits는 char의 배열(문자 배열)이다.['1', '1', '2', '3', '7', '8']
  • 동작 : 문자 배열을 문자열로 반환한다.
  • 출력 : 문자열 "112378"2. new StringBuilder
  • 입력 : 문자열 "112378"
  • 동작 : 문자열을 조작할 수 있는 객체 생성
  • 출력 : StringBuilder 객체에 "112378"이 저장된다.3. .reverse()
  • 입력 : StringBuilder 객체가 "112378"를 포함하고 있다.
  • 동작 : reverse()메소드는 문자열을 뒤집는다.
  • 출력 : 뒤집힌 StringBuilder 객체

 

 

 

단계 5. 문자열을 정수로 변환

내림차순으로 정렬된 문자열을 다시 정수로 변환한다.

long result = Long.parseLong(reversed.toString());

reverse.toString()

  • Long.parseLong 메소드는 String 타입의 입력값만 받는다.
  • StingBuilder는 문자열처럼 보이지만, 객체이기 때문에 직접 전달하면 컴파일 에러가 발생한다.
  • 따라서, toString()메소드로 String으로 변환하여 Long.parseLong메소드에 전달해야 한다.

 

 

 


 

 

 

 

🎯 전체 코드

import java.util.Arrays;
class Solution {
    public long solution(long n) {

        String str = Long.toString(n);
        char[] digits = str.toCharArray();
        Arrays.sort(digits);

        StringBuilder reverse = new StringBuilder(new String(digits)).reverse();

        return Long.parseLong(reverse.toString());
    }
}

 

 

 

 

728x90
'CodingTest/[프로그래머스] 자바' 카테고리의 다른 글
  • [Java] 문자열 내 마음대로 정렬하기
  • [Java] 숫자 문자열과 영단어
  • [Java] 시저 암호
  • [Java] 삼총사
leonie.
leonie.
  • leonie.
    leveloper
    leonie.
  • 글쓰기 관리
    • 분류 전체보기
      • Language
        • Java
      • Git
      • CS
      • CodingTest
        • [프로그래머스] 자바
      • Information
      • Framework
        • Spring
      • DBMS
        • Redis
        • SQL
      • AWS
      • OS
        • Mac
      • 자격증
        • 정보처리기사
      • 회고
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정처기필기
    알고리즘
    Java
    springboot
    코딩테스트
    자바
    정보처리기사
    프로그래머스
    정처기
    스프링
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
leonie.
[Java] 정수 내림차순으로 배치
상단으로

티스토리툴바