프로그래머스 42746 - 가장 큰 수

문제 링크

생각과 접근

  • 이어 붙여서 가장 큰 수를 만드는 문제다.
  • 어떤 기준으로 string을 sort해야 이어 붙여서 가장 큰 수를 만들 수 있을까?
    • 실제로 이어 붙여서 비교해보면 된다.
        bool compare(string a, string b){
            return a + b > b + a;
        }
    • 처음 보는 compare 함수 형태라 당황했지만, 꼭 기억해야 하는 compare함수라고 생각된다.

코드

#include <bits/stdc++.h>
using namespace std;

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

string solution(vector<int> numbers) {
    string answer = "";
    vector<string> v;

    for(int i = 0 ; i < numbers.size(); i++){
        v.push_back(to_string(numbers[i]));
    }
    sort(v.begin(), v.end(), compare);

    for(int i = 0; i < v.size(); i++){
        if(answer.empty() && v[i] == "0"){
            answer = "0";
            break;
        }
        answer.append(v[i]);
    }
    return answer;
}

채점 결과

+ Recent posts