넘치게 채우기

[LeetCode] 179. Largest Number 본문

PS/LeetCode

[LeetCode] 179. Largest Number

riveroverflow 2024. 9. 18. 15:34
728x90
반응형

https://leetcode.com/problems/largest-number/description/?envType=daily-question&envId=2024-09-18

leetcode - Largest Number

문제 유형 : 문자열 처리, 정렬

문제 난이도 : Medium

 

문제

Given a list of non-negative integers nums, arrange them such that they form the largest number and return it.

Since the result may be very large, so you need to return a string instead of an integer.

 

음이 아닌 정수 nums를 받는다. 이 수들을 나열하여 만들 수 있는 가장 큰 수를 구하시오.

결과가 커질 수 있으니, 문자열로 주시오.

 

풀이

사용자 지정 정렬을 이용하면 된다.

정렬의 기준은, 두 숫자를 문자열로 만들어서 합쳤을 때, 더 큰 경우가 앞에 오도록 하면 된다.

그 뒤, 숫자들을 접합시키면 된다. 

정렬된 수들중에서 맨앞이 0이면 그냥 "0"을 반환하면 된다.

 

코드

C++

#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    string largestNumber(vector<int>& nums) {
        sort(nums.begin(), nums.end(), [](auto &a, auto &b){
            string A = to_string(a);
            string B = to_string(b);
            return A + B > B + A;
        });

        if(nums[0] == 0) return "0";

        string ans = "";
        for(auto &num : nums) {
            ans += to_string(num);
        }

        return ans;
    }
};

 

728x90
반응형