정렬 - 가장 큰 수

Updated:

C++

정렬 - 가장 큰 수

문제

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

문제 출처

접근 방법

구현

코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

string chkZero(string);

bool comp(int a, int b) {
    string A = to_string(a);
    string B = to_string(b);
    string AB = A + B;
    string BA = B + A;
    a = stoi(AB);
    b = stoi(BA);
    return a > b;
}

string solution(vector<int> numbers) {
    string answer = "";
    sort(numbers.begin(), numbers.end(), comp);
    for (int i = 0; i < numbers.size(); i++) {
        answer = answer + to_string(numbers[i]);
    }
    answer = chkZero(answer);
    
    return answer;
}
string chkZero(string answer) {
    bool isZero = true;
    for (int i = 0; i < answer.size(); i++) {
        if (answer[i] != '0') {
            isZero = false;
        }
    }
    if (isZero)
        return "0";
    else
        return answer;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    string answer = solution({ 0, 0, 0, 0, 0 });
    cout << answer;
}

후기 및 개선할 점