sort함수에서 커스텀함수 compare함수를 이용하여 원하는 조건으로 정렬하는 문제였다.
각각의 원소들을 string으로 변환하여
3 + 30 = 330
30 + 3 = 303 두개를 비교하여 큰수가 앞에오도록 정렬하였다.
주의해야할점은 0이 가장 큰수가 되었을때는 0000과 같이 리턴되지않고 그냥 0 만 리턴되도록 해야한다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(string i, string j) {
return i + j > j + i;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> a;
for (int i = 0; i < numbers.size(); i++) {
a.push_back(to_string(numbers[i]));
}
sort(a.begin(), a.end(), compare);
for (int i = 0; i < a.size(); i++) {
answer += a[i];
}
if (a[0] == "0") return "0";
return answer;
}
int main() {
solution({ 0,0,0,0 });
return 0;
}