프로그래머스/LEVEL 2
가장 큰 수
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
반응형