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

DEINGVELOP·2022년 8월 10일
0

📒 문제 정보




🔑  문제 풀이


⦁ 나의 풀이 - Loop, ArrayList 활용

내가 작성한 코드이다. 반복문과 ArrayList를 활용하여 해결하였다.

import java.util.*;

class Solution {
    public long solution(long n) {
        long answer = 0;

        // 각 자리수 Arraylist에 넣기
        ArrayList<Long> tmp = new ArrayList<Long>();
        while (n > 0){
            tmp.add(n % 10);
            n /= 10;
        }

        // 작은 수부터 정렬
        Collections.sort(tmp);

        // 작은 수부터 1의 자리에 넣고 그 윗자리는 *10 해서 쌓기
        int cnt = 0;
        for (long j : tmp){
            j *= Math.pow(10, cnt);
            answer += j;
            cnt += 1;
        }

        return answer;
    }
}

⦁ 다른 풀이 1

public class ReverseInt {
    public int reverseInt(int n) {
        res = "";
        Integer.toString(n).chars().sorted().forEach(c -> res = Character.valueOf((char) c) + res);
        return Integer.parseInt(res);
    }
}

⦁ 다른 풀이 2

import java.util.*;

class Solution {
    public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);

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

⦁ 다른 풀이 3

import java.util.*;

class Solution {
    public long solution(long n) {
        return Long.parseLong(String.valueOf(n).chars().mapToObj(ch -> (char) ch)
                .sorted(Comparator.reverseOrder())
                .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
                .toString());
    }
}



💡  What I learned


0개의 댓글