[99클럽 코테 스터디 11일차 TIL] 정렬

sarah·2024년 8월 2일
0

programmers

목록 보기
11/21

문제

  • 문제 설명

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

  • 제한 조건

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

  • 입출력 예
n return
118372 873211

import java.util.Arrays;
import java.util.Collections;

class Solution {
    public long solution(long n) {
        String strN = Long.toString(n);
        
        String[] arrN = strN.split("");
        
        Arrays.sort(arrN, Collections.reverseOrder());
        
        StringBuilder sortedStrN = new StringBuilder();
        for (String s : arrN) {
            sortedStrN.append(s);
        }
        
        return Long.parseLong(sortedStrN.toString());
    }
}

해결방안

long -> String 변환 후, 문자열 쪼개서 배열로 만든 후 이를 정렬하고,
새로운 배열에 추가해주고 이를 long 으로 다시 변환하면 되겠다 생각했다.
이 과정에서 split("")하면 문자 하나씩 쪼개는 걸 알았고,
sort 할때 int 로 변경하고 진행했었는데, 문자열로 정렬해도 순서가 int 와 동일하다는 것을 깨달았다.

0개의 댓글