양의 정수 목록이 주어진다고 가정합니다. 목록을 내림차순으로 정렬한 다음 모든 요소를 결합하여 문자열을 만들어야 합니다. 결합된 문자열을 반환합니다.
따라서 입력이 입력 =[415, 78, 954, 123, 5]인 경우 출력은 954785415123
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- cmp() 함수를 정의합니다. 이것은 l, r
- 이 걸립니다
- ((l)의 문자열 표현 + (r)의 문자열 표현)의 정수 값> ((r)의 문자열 표현 + (l)의 문자열 표현)의 정수 값, then
- 1을 반환
- 그렇지 않으면
- 반환 -1
- ((l)의 문자열 표현 + (r)의 문자열 표현)의 정수 값> ((r)의 문자열 표현 + (l)의 문자열 표현)의 정수 값, then
- 함수 비교에 따라 목록 입력 정렬
- 입력의 모든 요소를 문자열로 결합하고 반환합니다.
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
functools import cmp_to_keydef cmp(l, r):if int(str(l) + str(r))> int(str(r) + str(l)):return 1 else:return -1def solve( 입력):input.sort(key=cmp_to_key(cmp), reverse=True) return "".join(map(str, input))print(solve([415, 78, 954, 123, 5]))사전>입력
[415, 78, 954, 123, 5]출력
954785415123