정렬 - 가장 큰 수
Updated:
C++
정렬 - 가장 큰 수
문제
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
접근 방법
구현
코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
string chkZero(string);
bool comp(int a, int b) {
string A = to_string(a);
string B = to_string(b);
string AB = A + B;
string BA = B + A;
a = stoi(AB);
b = stoi(BA);
return a > b;
}
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(), numbers.end(), comp);
for (int i = 0; i < numbers.size(); i++) {
answer = answer + to_string(numbers[i]);
}
answer = chkZero(answer);
return answer;
}
string chkZero(string answer) {
bool isZero = true;
for (int i = 0; i < answer.size(); i++) {
if (answer[i] != '0') {
isZero = false;
}
}
if (isZero)
return "0";
else
return answer;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string answer = solution({ 0, 0, 0, 0, 0 });
cout << answer;
}