새소식

PS/LeetCode

179. Largest Number

  • -

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)

풀이 완료!

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.