numbers의 원소는 1000이하이기 때문에 세자리 수로 맞춘 뒤(x*3) 비교하여 문제를 해결할 수 있었다
문자열 비교는 아스키값으로 치환되어 정렬되기 때문에 큰 수부터 내림차순으로 정렬하였다
int로 변환한 뒤 다시 str을 해주는 이유는 모든 값이 0일때(000)를 처리하기 위함이다
소스 코드
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key = lambda x:x*3, reverse=True)
answer = str(int(''.join(numbers)))
return answer
functools.cmp_to_key(func) : 구식 비교 함수를 키 함수로 변환
import functools
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=functools.cmp_to_key(comparator),reverse=True)
answer = str(int(''.join(n)))
return answer