string 객체가 가진 메서드(함수) 중 find() 메서드는 인자로 넣은 데이터를 string 내에서 있는지 탐색하는 역할을 수행
만약 탐색이 성공할 경우 string::size_t의 형식으로(int형으로 변환 가능) 위치를 표시함
#include <string>
string s("Hello World!");
int a = s.find('e'); //a = 1;
string::size_t a = s.find('E'); //a = string::npos에 해당하는 값으로 업데이트

각 스킬 트리를 check_skill 함수를 통해 확인하고 정상적으로 동작할 경우 answer를 1 늘림
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool check_skill(string &skill, string &skill_tree){
int before = -1; //마지막으로 사용했던 스킬 트리의 번호 저장
for(auto &i : skill_tree){
auto cur = skill.find(i); //스킬의 순서를 찾음
if(cur == string::npos) continue; //만약 해당 스킬을 skill에서 찾지 못한 경우 다음으로 넘김
if(cur != before + 1) return false; //먄약 스킬이 순서대로 찍히지 않은 경우 false 반환
before++; //마지막 사용 스킬트리 번호 업데이트
}
return true;
}
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
//각 스킬트리를 학인하여 정상적일 경우 answer를 1 증가시킴
for_each(skill_trees.begin(), skill_trees.end(), [&](string s){if(check_skill(skill, s)) answer++; });
return answer;
}