문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
def solution(numbers): numbers = list(map(str, numbers)) #문자열 변환후 리스트 재생성 # * 3을 하는 이유는 1000이하를 맞춰주기 위함 # 666, 101010, 222 # 문자열의 비교는 ASCII 값으로 치환돼 정렬되며 위 숫자에서 첫번째 인덱스 값으로 비교함 # 따라서 문자열 6, 1, 2와 비교하며 ASCII로 치환하면, # 86, 81. 82 -> 6 > 2 > 1 순으로 내림차순 정렬 numbers.sort(key = lambda x : x * 3, reverse = True) # 문자열 내림차순 정렬한 것을 다시 정수로 변환한 후 합쳐서, 다시 문자열로 출력 return str(int(''.join(numbers))) # 6210 출력