179. Largest Number - python3
179. Largest Number
Given a list of non-negative integers nums, arrange them such that they form the largest number.
Note: The result may be very large, so you need to return a string instead of an integer.
My Answer 1: Wrong Answer (54 / 227 test cases passed.)
class Solution:
def largestNumber(self, nums: List[int]) -> str:
if len(nums) == 1:
return str(nums[0])
result = ""
order = []
# 정렬
for i in range(len(nums)):
num = int(str(nums[i])[0])
for j in range(i+1, len(nums)):
num2 = int(str(nums[j])[0])
if num > num2:
nums[i], nums[j] = nums[i], nums[j]
for i in range(len(nums)-1, -1, -1):
if nums[i] == -1:
continue
num = str(nums[i])
turn = 0
for j in range(i-1, -1, -1):
print(nums[i], nums[j])
num2 = str(nums[j])
if nums[j] == -1:
continue
elif num[0] != num2[0]:
result += str(nums[i])
nums[i] = -1
break
else:
if num[-1] > num2[-1]:
turn = 1
else:
result += str(nums[j])
nums[j] = -1
if turn:
result += str(nums[i])
nums[i] = -1
for num in nums:
if num > -1:
result += str(num)
print(nums)
return result
맨 앞자리 값을 기준으로 정렬한 후 맨 뒤부터 result 에 넣는 식으로 해보려 했는데..
너무 더러워지기만 해서 루션이 봤어요.
Solution 1: Runtime: 36 ms - 81.89% / Memory Usage: 14.4 MB - 31.76%
class LargerNumKey(str):
def __lt__(x, y):
return x+y > y+x
class Solution:
def largestNumber(self, nums: List[int]) -> str:
largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey))
return '0' if largest_num[0] == '0' else largest_num
초간단이라 놀랬네요^^; 완전 이해는 안된다는 점~...
LargerNumKey
라는 클래스를 만들어줘서...
근데 왜 x+y
를 이용하는거지...??
largest_num
은 x+y > y+x
이거대로 정렬이 쭉 된 값인가 봄
Author And Source
이 문제에 관하여(179. Largest Number - python3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsh5408/179.-Largest-Number-python3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)