https://leetcode.com/problems/largest-number/
Largest Number - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
풀이 과정
여러 숫자를 앞뒤로 이어 붙여 가장 큰 숫자를 만드는 문제이다.
위의 예시에서 보이듯 3, 30, 34, 5, 9의 숫자 모음은 9, 5, 34, 3, 30 순으로 붙여야 가장 큰 수로 만들 수 있다. 커스텀 비교 연산자를 하나 선언해서 문제를 해결할 수 있다. 원래의 비교에 따르면 3과 30을 비교하면 30이 더 큰 숫자이고 34와 5를 비교하면 34가 더 큰 숫자이다. 하지만 이 문제를 해결하기 위해서는 str(x) + str(y) > str(y) + str(x)일때 참을 출력하는 커스텀 비교 연산자를 하나 만들어주어야 한다.
그러면 3과 30은 330 > 303이므로 3이 더 큰 것으로 처리되고 34와 5는 345 < 534이므로 5가 더 큰 것으로 처리될 것이다. 이와 같이 처리해야 문제의 조건을 만족할 수 있다.
소스 코드
class to_swap(str):
def __lt__(x, y):
return x+y > y+x
class Solution:
def largestNumber(self, nums: List[int]) -> str:
nums = [str(i) for i in nums]
nums.sort(key=to_swap)
return str(int(''.join(map(str, nums))))
'알고리즘 문제 풀이 > 리트코드' 카테고리의 다른 글
LeetCode - 704. Binary Search [Python] (0) | 2022.11.02 |
---|---|
LeetCode - 973. K Closest Points to Origin [Python] (0) | 2022.10.20 |
LeetCode - 56. Merge Intervals [Python] (0) | 2022.10.17 |
LeetCode - 148. Sort List [Python] (0) | 2022.10.17 |
LeetCode - 215. Kth Largest Element in an Array [Python] (0) | 2022.09.11 |