반응형
사용자 정의에 의한 정렬을 하여 이 문제를 풀면된다.
즉, cmp() 함수를 생성하여 sort()의 세번째 인자 값으로 넣으면, bool 함수의 반환 값에 의해서 정렬이 동작한다.
number값을 to_string 함수를 통해서 문자열로 처리한 후 compare()함수에서 문자열 a와 b를 합치는데 이때 a+b를 연결한것과 b+a를 연결한 것중에 더 큰 값을 앞에다가 정렬 하겠다는 의미이다.
6과 10을 한번 보자
해당 값을 문자열로 처리한후 "610" 과 "106" 값으로 만든 후 더 큰 값을 앞에다가 정렬한다는 의미이다.
그러면 6 10 이 정렬이 되고 다음 "102" 와 "210" 을 비교해서 더 큰 값을 앞에다가 정렬하면 2 10이 된다. 이런식으로 모든 값을 정렬하게 되면 6 10 2 순으로 정렬되게 된다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string s1, string s2){
return s1+s2 > s2+s1;
}
string solution(vector<int> numbers) {
vector <string> v;
for(int i=0; i<numbers.size() ;i++){
string s= to_string(numbers[i]);
v.push_back(s);
}
sort(v.begin(),v.end(),cmp);
string answer="";
for(string s : v){
answer+=s;
}
if(answer[0]=='0')return "0";
return answer;
}
반응형
'프로그래머스 > Level_2' 카테고리의 다른 글
[Level_2 / C++ / 카카오] 수식 최대화 (0) | 2022.01.20 |
---|---|
[Level_2 / C++ / 카카오] 튜플 (0) | 2022.01.19 |
[Level_2] 더 맵게 (C++) (0) | 2022.01.17 |
[Level_2] 멀쩡한 사각형 (C++) (0) | 2022.01.17 |
[Level 2 / C++ / 카카오] 카카오프렌즈 컬러링북 (0) | 2022.01.17 |
댓글