プログラマの最大数





コード#コード#

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp (int num1 , int num2){
    string str1 = to_string(num1);
    string str2 = to_string(num2);
    
    if(stoi(str1+str2) > stoi(str2+str1))
    {
        return true;
    }
    else return false;
    
}

string solution(vector<int> numbers) {
    string answer = "";
    
    if(numbers.size() == 1)
        return answer += to_string(numbers[0]);
    sort(numbers.begin(), numbers.end(), cmp);
    if(numbers[0] == 0) return answer+=to_string(0);    
    for(int i=0; i<numbers.size(); i++)
    {
        answer += to_string(numbers[i]);
    }
    
    return answer;
}

に答える


数値に存在する数値を並べ替えて組み合わせる場合は、最大の数値を見つける必要があります.最初は、すべてのソート状況の数を無計画に考えていましたが、どう考えても、この方法ではないようです.sort関数による比較ソートにより,最大数を検索する条件は
  • の一番前の数字は前の
  • まで大きくなければなりません.
    比較
  • の2つの数字の長さが同じで、前列が同じであれば、後列の数字で比較します.
  • の1番目の数字+2番目の数字を2番目の数字+1番目の数字と比較し、大きな数字を返します
    ->この場合、+はプラス記号ではなく文字列にマージされます.
  • 最後に、このメソッドでソートした数値を答え文字列に集計して返します.