

functools 라이브러리의 cmp_to_key 를 사용하여 커스텀 정렬함수 만들어서 정렬하기
정렬 기준: A+B vs B+A 형식으로 비교
ex)
100 + 10 = "10010"
10 + 100 = "10100"
에서 "10100" > "10010"
-> 단순 자리수 확장으로는 이런 경우를 커버할 수 없음!
from functools import cmp_to_key
# 커스텀 비교 함수
def compare(a, b):
# a와 b가 문자열로 입력되어야 함 주의!
if a + b > b + a: # a가 앞에 오는게 더 큰 경우
return -1 # a < b가 되어서 a가 b보다 앞으로 감
elif a + b < b + a: # b가 앞에 오는게 더 큰 경우
return 1 # a > b가 되어서 b가 a보다 앞으로 감
else:
return 0 # 같다 (순서 유지)
def solution(numbers):
# sort하기 전 정수 -> 문자열로 변환
numbers = list(map(str, numbers))
# compare 함수(커스텀) 기준으로 정렬
numbers.sort(key=cmp_to_key(compare))
# 배열을 하나의 문자열로 만들기
answer = ''.join(numbers) # join() 은 문자열로 이루어진 배열에만 사용 가능!
# '000'이 될 경우 0 하나만 리턴하기
if answer[0] == '0':
return '0'
return answer