GenieLove! 2021. 4. 8. 00:46
728x90
반응형

Java

import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        StringBuffer answer = new StringBuffer();
        LinkedList<Integer> numbers2 = new LinkedList<>();
        for(int i = 0; i < numbers.length; i++) numbers2.add(numbers[i]);
        Collections.sort(numbers2, new Comparator<Integer>(){
            public int compare(Integer o1, Integer o2){
                if(o1 == o2) return 1;
                Integer n1 = Integer.valueOf(String.valueOf(o1) + String.valueOf(o2));
                Integer n2 = Integer.valueOf(String.valueOf(o2) + String.valueOf(o1));
                return n1 >= n2 ? -1: 1;
            }
        });
        
        if(numbers2.get(0) == 0)    return "0";
        for(Integer i : numbers2){
            answer.append(i);
        }
        return answer.toString();
    }
    
}

Python

import functools
def solution(numbers):
    answer = ''
    numbers2 = list(map(str, numbers))
    
    numbers2 = sorted(numbers2, key=functools.cmp_to_key(comparator), reverse = True)
    if numbers2[0] == "0": return "0"
    return ''.join(numbers2)

def comparator(a, b):
    s1 = a + b
    s2 = b + a
    return 1 if int(s1) >= int(s2) else -1

Go

import "sort"
import "strconv"
func solution(numbers []int) (result string) {
    sort.Slice(numbers, func (i, j int) bool {
        a := strconv.Itoa(numbers[i]) + strconv.Itoa(numbers[j])
        b := strconv.Itoa(numbers[j]) + strconv.Itoa(numbers[i])
        aInt, _ := strconv.Atoi(a)
        bInt, _ := strconv.Atoi(b)
        if aInt > bInt {
            return true
        }
        return false
    })
    for _, value := range numbers {
        result += strconv.Itoa(value)
    }
    if value, _ := strconv.Atoi(result); value == 0 {
        return "0"
    }
    return result
}
728x90
반응형