Problem : https://leetcode.com/problems/largest-number
Difficulty : Medium
Status : Solved
Time : 00:15:23
더보기
음의 정수가 아닌 nums를 입력으로 받아, 이들을 하나로 이었을 때 가장 큰 수가 되도록 정렬하여 반환하라.
결과값이 매우 클 수 있으므로, 정수 대신 문자열 형태로 반환하도록 한다.
분명히 어디서 많이 봤었는데...? 하는 문제.
정렬을 그리디하게 수행하면 되는데, 임의의 수 a, b에 대해서 (a, b를 이은 결과) >= (b, a를 이은 결과)가 항상 유지되도록 정렬하면 된다. 그리디 + 정렬 문제.
풀이 코드
class Solution:
@staticmethod
def compare(x: str, y: str) -> int :
if x+y > y+x :
return -1
else :
return 1
def largestNumber(self, nums: List[int]) -> str:
nums = list(map(str, nums))
nums.sort(key = cmp_to_key(Solution.compare))
if nums.count("0") == len(nums) :
return "0"
return "".join(nums)