public String solution(int[] numbers) {
StringBuffer result = new StringBuffer();
String[] strings = Arrays.toString(numbers).split("[\\[\\]]")[1].split(", ");
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2 + o1).compareTo(o1 + o2);
}
});
for (String s : strings) {
result.append(s);
}
return result.charAt(0) == '0' ? "0" : result.toString();
}
나중에 합산되는 수라면 비교할 때, 서로 합산하여 정렬 후 풀어낸 문제
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (316.93ms, 81.2MB)
테스트 2 〉 통과 (181.58ms, 74.6MB)
테스트 3 〉 통과 (351.93ms, 83.5MB)
테스트 4 〉 통과 (34.84ms, 54.8MB)
테스트 5 〉 통과 (284.31ms, 80.8MB)
테스트 6 〉 통과 (242.54ms, 79.5MB)
테스트 7 〉 통과 (2.58ms, 53.1MB)
테스트 8 〉 통과 (2.21ms, 52.1MB)
테스트 9 〉 통과 (2.49ms, 52.8MB)
테스트 10 〉 통과 (2.47ms, 53.3MB)
테스트 11 〉 통과 (2.70ms, 52.2MB)
정렬쪽이 많이 부족하여 애먹는 중이다,,,,,
def comparator(a,b):
t1 = a+b
t2 = b+a
return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1 // t2가 크다면 -1 // 같으면 0
def solution(numbers):
n = [str(x) for x in numbers]
n = sorted(n, key=cmp_to_key(comparator),reverse=True)
answer = str(int(''.join(n)))
return answer
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (1444.91ms, 21.7MB)
테스트 2 〉 통과 (545.65ms, 16.3MB)
테스트 3 〉 통과 (2055.61ms, 25.2MB)
테스트 4 〉 통과 (14.97ms, 10.5MB)
테스트 5 〉 통과 (1125.91ms, 20.4MB)
테스트 6 〉 통과 (912.68ms, 19.1MB)
테스트 7 〉 통과 (0.10ms, 10.4MB)
테스트 8 〉 통과 (0.07ms, 10.4MB)
테스트 9 〉 통과 (0.07ms, 10.4MB)
테스트 10 〉 통과 (0.06ms, 10.4MB)
테스트 11 〉 통과 (0.08ms, 10.3MB)