문제 출처:https://programmers.co.kr/learn/courses/30/lessons/42746
문제 분석
말 그대로 주어진 정수들을 이어붙일 때에 가장 큰 수를 찾아서 string 형태로 출력하면 되는 문제입니다. 저는 이 문제를 sort를 해주어야 한다고 생각했었고 custrom한 compare함수를 통해서 비교했습니다. string 자체적으로 크기비교가 되기 때문에 각 숫자들을 string으로 변환하여 각각 합쳐본 후 size비교를 했습니다.
코드는 다음과 같습니다:
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a, int b){
string s_a = to_string(a), s_b = to_string(b) ;
return s_a + s_b > s_b + s_a ;
}
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(), numbers.end(), compare) ;
for(auto n : numbers)
answer += to_string(n) ;
if(answer[0] == '0') return "0" ;
return answer;
}
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/Programmers/P42746_Big_Number.cpp
훈수 및 조언은 언제든 환영입니다.