문제

설명

  • 주어진 0과 양의정수 배열에서 만들 수 있는 가장 큰수를 구하는 문제

코드

#include <string>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

string solution(vector<int> numbers) {
    string answer = "";
    stringstream sss;
    
    sort(numbers.begin(), numbers.end(), [](const int& first, const int& second){
        string f = to_string(first);
        string s = to_string(second);
        
        if (stoll(f+s) > stoll(s+f)) {
            return true;
        }
        return false;
    });
        
    for (int i = 0; i < numbers.size(); i++) {
        sss << numbers[i];
    }
    
    answer = sss.str();
    int count = 0;
    for (int i = 0; i < answer.size(); i++) {
        if (answer[i] == '0') {
            count++;
        } else {
            break;
        }
    }
    // 모든 수가 0일때
    if (count == answer.size()) {
        answer = "0";
    } else {
        // 0010 등과 같이 숫자 앞에 0이 왔을 때 0 제거
        answer = answer.substr(count,answer.size());
    }
    return answer;
}

댓글을 남기시려면 Github 로그인을 해주세요