문자열 내 마음대로 정렬하기

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int global_n;//전역변수 n
//오름차순 정렬
bool compare(string A, string B){
if(A[global_n] == B[global_n]){
return A < B;
}
else{
return A[global_n] < B[global_n];
}
}
vector<string> solution(vector<string> strings, int n) {
vector<string> answer;
//n이 1이면 그거 기준으로, 근데 해당 인덱스의 문자가 같으면 그때는 사전순으로
//1. compare 함수를 만들어서 사용자정의 정렬
//해당 방법으로는 compare에 n을 보낼 수 없기 때문에 전역변수 n을 만들어야 함
global_n = n;
sort(strings.begin(), strings.end(), compare);
for(string temp : strings){
cout << temp << " ";
answer.push_back(temp);
}
cout << "\n";
//2. 람다 함수로 사용자정의 정렬
//해당 방법은 compare 재사용이 불가능하고 가독성이 떨어질 수 있음
sort(strings.begin(), strings.end(), [n](const string& A, const string& B){
if(A[n] == B[n]){
return A < B;
}
else{
return A[n] < B[n];
}
});
for(string temp : strings){
cout << temp << " ";
answer.push_back(temp);
}
cout << "\n";
return answer;
}