풀이 소요시간 : 20분
Map
자료구조를 사용하여 간단하게 풀 수 있었다. 처음에는 구조체를 사용하려했는데 너무 복잡한것 같아서 조금 더 단순한 방법이 있을지 고민했다. 제출 후 다른 풀이과정을 참고했지만 내 풀이가 거의 가장 깔끔한 것 같았다.
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
int State = 1;
int Ans = 0;
map<char, int> Map;
int solution(string skill, vector<string> skill_trees) {
for(int i = 0; i < skill.length(); i++)
{
Map[skill[i]] = i + 1;
}
for(string S : skill_trees)
{
for(int i = 0; i < S.length(); i++)
{
char C = S[i];
if(State > Map[C]) continue;
else if(State == Map[C])
{
State++;
}
else if(State < Map[C])
{
Ans--;
break;
}
}
Ans++;
State = 1;
}
return Ans;
}