음수가 아닌 정수 목록이 있다고 가정하면 가장 큰 수를 구성하도록 정렬해야 합니다. 따라서 배열이 [10, 2]이면 가장 큰 수는 210이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 최상위 숫자가 처음에 두는 것보다 큰 숫자를 배열하는 것과 같이 숫자를 배열합니다. 그런 다음 배열의 숫자를 결합하기만 하면 됩니다.
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
from functools import cmp_to_key class Solution(object): def largestNumber(self, nums): for i in range(len(nums)): nums[i] = str(nums[i]) nums.sort(key=cmp_to_key(lambda x,y:self.compare(x,y))) return "".join(nums).lstrip("0") or "0" def compare(self,x,y): if x+y<y+x: return 1 elif x+y == y+x: return 0 else: return -1 ob1 = Solution() print(ob1.largestNumber([3,30,5,6,8]))
입력
[3,30,5,6,8]
출력
"865330"