주어지는 스킬 트리순서에 맞게 스킬이 짜여있는지를 판별하면 된다. 주의할 점은 주어진 스킬트리 외로 그냥 익힐 수 있는 스킬들도 존재한다는 점이다.
#include <string>
#include <vector>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
for (auto skill_tree : skill_trees) {
bool is_good = true ;
int skill_idx = 0;
for (auto user_skill : skill_tree) {
int cur_idx = skill.find(user_skill);// 스킬 트리에서 유저가 배운 스킬이 있는지 확인
if (cur_idx == -1) continue ;// 없다면 넘긴다
if (cur_idx != skill_idx) {// 있는데 순서에 맞게 찍지 않았다면
is_good = false;
break ;
}
skill_idx++;
}
if (is_good) answer++;
}
return answer;
}