#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 사용자 정의 비교 함수
bool compare(const string &a, const string &b, int n) {
if (a[n] == b[n]) return a < b; // n번째 문자가 같으면, 전체 문자열을 사전순으로 비교
return a[n] < b[n]; // n번째 문자를 기준으로 비교
}
vector<string> solution(vector<string> strings, int n) {
// 정렬을 위한 compare 함수를 sort에 적용할 수 있도록 람다로 wrapping
sort(strings.begin(), strings.end(), [n](const string &a, const string &b) {
return compare(a, b, n);
});
return strings;
}
여기서 C++의 sort함수와 람다 표현식을 사용하여 문자열 배열을 특정 기준에 따라 정렬하고 있음
-n번째 문자를 기준으로 오름차순 정렬하는 것이 그 기준임.
-C++11부터 도입된 기능으로, 이름 없는 함수를 직접 선언하여 사용할 수 있게 함.
-람다는 주로 STL 알고리즘의 인자로 사용되는 콜백 함수를 간편하게 작성할 때 유용함.
[capture](parameters) -> return_type {
// Function body
}
람다 외부에서 정의된 변수를 람다 함수 내부에서 사용할 수 있게 해줌. [n]과 같이 대괄호 안에 변수를 명시하여 캡쳐
람다 함수의 매개변수를 정의
람다 함수의 반환 타입을 명시
C++14부터는 반환 타입을 생략할 수 있음
람다 함수의 본문
-람다 표현식을 사용하여 다른 함수를 감싸는 것을 의미.
-이 경우 람다 표현식 내부에서 다른 함수를 호출하거나, 특정 로직을 람다 표현식으로 직접 구현하여 사용할 수 있음
-여기서는 람다 표현식을 사용하여 compare함수를 sort함수의 비교 기준으로 적용하고 있음
-[n]을 사용하여 람다 표현식 외부에 있는 'n' 변수를 캡처하고 있음. 이를 통해 람다 표현식 내부에서 'n'번째 문자에 접근하여 비교할 수 있음