문제 링크

요약

  • 다시 풀어볼것

최종

  • 이 문제의 key idea는:
    • 두 수 ab 에 대해, concat한 결과(ab, ba) 중 어떤게 더 큰가를 가지고 정렬하면 된다.
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
string solution(vector<int> numbers) {
	vector<string> num_str;
	string ret = "";
 
	for (auto n : numbers) {
		num_str.push_back(to_string(n));
	}
 
	sort(num_str.begin(), num_str.end(), [](auto &a, auto &b) {		
		return a + b > b + a;
	});
 
	for (auto &n : num_str) {
		ret += n;
	}
 
	for (int i = 0; i < ret.size(); i++) {
		if (ret[i] != '0') {
			return ret;
		}
	}
 
	return "0";
}
  • Corner case는 모든 문자가 '0' 이면 "0" 을 return 해야된다는거다.