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

2023. 9. 21. 14:32알고리즘

문제

풀이

bool cmp(string a, string b){
    return a+b > b+a;
}

이 함수는 비교함수이다. 두개의 문자여릉ㄹ 인자로 받아 두 문자열을 연결한 결과물을 비교해 참 또는 거짓을 리턴한다. a와 b를 이어붙인 문자열을 비교해 더 크면 참을 반환한다. 

이 함수를 토대로 코드를 짰다.

 

문자열을 받은 다음에 정열을 한다. 이 때, 6과 10이 주어졌을 때 610이 큰지 106이 큰지를 리턴해준다. 이런방식으로하면 단순히 정렬 알고리즘만을 써서도 문제에 대한 답을 얻을 수 있다.

 

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

bool cmp(string a, string b){
    return a+b > b+a;
}

string solution(vector<int> numbers) {
    string answer = "";
    vector<string> v;
    for (auto i:numbers){
        v.push_back(to_string(i));
    }
    sort(v.begin(), v.end(), cmp);
    if (v[0]=="0"){
        return "0";
    }
    for (auto i : v){
        answer+=i;
    }
    return answer;
}