[프로그래머스/C++] 가장큰수

최대 1 분 소요

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를 반환한다.