프로그래머스

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

Paragon53 2025. 3. 20. 15:25
minecraft-font

JAVA

 

문제

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

 

프로그래머스

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

programmers.co.kr

 

예를 121이면 정렬 하면 1,1,2로 변경한다음 211로 합쳐서 출력한다.

CODE

풀이

 

입력한 수를 분리하는 건 이전 시간에 While문으로  입력값  n을 10으로 나누고 나머지를 임시 Long Type의 Lsit에 보관한다음, 입력 값 n을 10을 나눈 상태를 새로운 n >0때만을 작동하도록 하게 할 것이다. (for문으로도 가능)

 

또다른 임시 변수 String에 List를 담아둔 것을 하나로 바꾸어서 원래 출력해야 하는 Long 타입으로 변환한다.

 

List에 Stream 과 map을 사용하여, Comparator.reverseOrder()로 내부 리스트 배열을 내림차순으로 변환한다음 join 하여 하나의 문자열로 반환한다.

 

Long은 long의 래퍼 클래스로 Long은 객체(Class)이고, long은 변수의 long이다. 

 

Long.parase(s)로 문자열을 long type으로 형을 바꿔 반환시켜주면 된다.   

 

 

CODE

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public long solution(long n) {
        long answer = 0;
        List<Long> temp1 = new ArrayList<>();
        while (n>0){
            temp1.add( n% 10);
            n= n/10;
        }
        String s = temp1.stream().map(String::valueOf).sorted(Comparator.reverseOrder()).collect(Collectors.joining());
        answer =Long.parseLong(s);
        return answer;
    }
}