(Python, Java) 리트코드 - Largest Number

[문제 링크]

Python 풀이

import functools
from typing import List


class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        def comparator(x, y):
            # 숫자 음수, 0, 양수 중 반환해야하므로 int로 변환시켜서 연산해야 한다.
            return int(x + y) - int(y + x)

        answer = ''.join(sorted(map(str, nums), key=functools.cmp_to_key(comparator), reverse=True))
        if answer[0] == '0':
            return '0'
        return answer

Java 풀이

import java.util.*;
import java.util.stream.Collectors;


class Solution {
    public String largestNumber(int[] nums) {
        int length = nums.length;
        String[] numStr = new String[length];
        for (int idx=0;idx<length;idx++){
            numStr[idx] = String.valueOf(nums[idx]);
        }

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

        String result = Arrays.stream(numStr).collect(Collectors.joining());
        if (result.charAt(0) == '0')
            return "0";
        return result;
    }
}

© 2021. By Backtony