728x90
출처
https://programmers.co.kr/learn/courses/30/lessons/42746#
내 풀이
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
// ex) 3,30 -> 330 > 303 이런식으로 비교
bool compare(string a, string b)
{
return a+b>b+a;
}
vector<string>v;
string answer = "";
string solution(vector<int> numbers) {
for(int i=0;i<numbers.size();i++)
{
string input = to_string(numbers[i]);
v.push_back(input);
}
sort(v.begin(),v.end(),compare);
//만약 000 이면 정답이 0이 되어야함
if(v[0] == "0") return "0";
for(int i=0;i<v.size();i++)
{
answer+=v[i];
}
return answer;
}
해설
3과 30의 숫자를 비교하기 위해서 a+b b+a로 비교 후 내림 차순(>)으로 정렬해주었다.
ex) 330 > 303
느낀점
더보기
3일 동안 이 문제를 해결하기 위해서 사경을 헤맸다. (하루 2시간 정도씩)
테스트 1~6가 풀리지 않았기 때문이다.
도저히 풀릴것 같지 않아 결국 판도라의 상자를 열어보았다.
그리고 단 한줄의 코드로 문제가 해결된다는걸 깨닫는 순간 뭔가 너무 복잡한 마음이 들었다.
아직 갈길이 먼가보다. 노력에 노력을 더 해야겠다.