nums라는 숫자 목록이 있다고 가정하고 가능한 가장 큰 숫자가 되도록 순서를 재정렬하고 이를 문자열로 반환해야 합니다.
따라서 입력이 nums =[20, 8, 85, 316]과 같으면 출력은 "88531620"이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 배열 온도 정의
- 숫자 단위의 각 항목 i에 대해:
- i를 temp에 문자열로 삽입
- 사전 순서에 따라 배열 temp를 정렬합니다(연결 b가 b 연결 a보다 큰 경우 두 문자열 a, b 확인)
- temp:
- 의 각 문자열에 대해
- res :=res 연결 s
- 반환 결과
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <bits/stdc++.h> using namespace std; static bool cmp(string a, string b) { return (a + b) >= (b + a); } string solve(vector<int>& nums) { vector<string> temp; for (int i : nums) { temp.push_back(to_string(i)); } sort(temp.begin(), temp.end(), cmp); string res; for (string s : temp) { res += s; } return res; } int main(){ vector<int> v = {20, 8, 85, 316}; cout << solve(v); }
입력
{20, 8, 85, 316}
출력
88531620