[프로그래머스/C++] 가장큰수
1.문제 링크
2. 풀이 전 계획과 생각
- 정렬
3. 풀이
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
int cmp(const string a, const string b){
return a+b>b+a;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> str;
for(int i=0;i<numbers.size();i++) str.push_back(to_string(numbers[i]));
sort(str.begin(), str.end(), cmp);
for(int i=0;i<numbers.size();i++) answer+=str[i];
if(answer[0]=='0') return "0";
return answer;
}
숫자를 문자열로 바꿔 벡터에 저장한다.
벡터를 a+b 기준으로 내림차순 정렬한다.
정렬된 벡터를 순회하면서 문자열을 이어붙인다.
만약 저장한 문자열 첫번째 원소가 ‘0’이라면 ‘0’을 반환한다. 그것이 아니라면 문자열 answer를 반환한다.