(Python, Java) 프로그래머스 - 가장 큰 수

[문제 링크]

Python 풀이

def solution(numbers):
    class Predicate(str):
        def __lt__(self, other):
            return self + other < other + self # 오름차순 -> 작은 것을 앞쪽에

    result = ''.join(sorted(map(str, numbers), key=Predicate, reverse=True)) # 내림차순으로 정렬
    return "0" if result[0] == "0" else result

Java 풀이

class Solution {
    public String solution(int[] numbers) {
        List<String> arr = new ArrayList<>();
        for (int number : numbers) {
            arr.add(String.valueOf(number));
        }

        arr.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        });

        StringBuilder sb = new StringBuilder();
        for (String s : arr) {
            sb.append(s);
        }

        String answer = sb.toString();
        if (answer.charAt(0) == '0')
            return "0";
        return answer;
    }
}

두 숫자를 문자로 더해서 큰 경우를 우선적으로 정렬하는 방식이다.


© 2021. By Backtony