#include<string>#include<vector>#include<algorithm>#include<iostream>usingnamespace std;
string make_string(vector<int>const&nums) {
string str ="";
for (auto it = nums.begin(); it != nums.end(); ++it) {
str += to_string(*it);
}
return str;
}
string solution(vector<int> nums) {
auto cmp = [](auto l, auto r) {
auto lr = to_string(l) + to_string(r);
auto rl = to_string(r) + to_string(l);
return lr > rl;
};
sort(nums.begin(), nums.end(), cmp);
auto answer = make_string(nums);
// 0 l-trim
auto it = find_if(
answer.begin(), answer.end(),
[](auto c) {return c !='0';}
);
answer.erase(answer.begin(), it);
if (answer.empty())
answer ="0";
return answer;
}
여기서 한 가지 더 처리를 해 주어야 하는데, 최종적으로 숫자인 문자열을 반환해야 하므로, 맨 앞 자리수에 연속된 '0'들을 제거해 주어야 한다. 왼쪽에서 0으로 한번 트림(Trim)해 주어야 하며, 마지막으로 처음에 전달받은 배열의 모든 원소가 0이었던 경우, 모든 것이 트림되지만, 이 때의 수는 "0" 이므로 비어있을 때의 처리를 해주어야 한다.