새소식

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)

풀이 완료!

'PS > LeetCode' 카테고리의 다른 글

386. Lexicographical Numbers  (0) 2024.09.21
241. Different Ways to Add Parentheses  (0) 2024.09.19
884. Uncommon Words from Two Sentences (Python)  (1) 2024.09.17
2331. Evaluate Boolean Binary Tree  (0) 2024.05.16
1219. Path with Maximum Gold  (0) 2024.05.14
Contents

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

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