[프로그래머스] 스킬트리
[프로그래머스] 스킬트리
#include "header.h"
using namespace std;
map <char, int> m;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
int idx = 0;
for(int i=0; i<skill.size(); i++) {
skill[i] = toupper(skill[i]);
m[skill[i]]++;
}
for(int i=0; i<skill_trees.size(); i++){
idx = 0;
int flag = 1;
for(int j=0; j<skill_trees[i].size(); j++){
if(m[skill_trees[i][j]]){ //스킬트리에 존재하는 스킬이라면
if(skill_trees[i][j] != skill[idx]){ //순서가 안맞으면
flag = 0;
break;
}else{
idx++;
}
}
}
if(flag) answer++;
}
return answer;
}
- 스킬트리를 대문자로 초기화 해주고, 맵에 저장한다.
- 맵으로 스킬트리에 존재하는 스킬인지 확인을 하고,
- 존재한다면 순서가 맞는지 확인한다.
- 순서가 안맞으면 flag를 false로 변경 후 break 해 준다.
- 아니라면 스킬트리의 인덱스를 +1 해 준다.
- flag가 true 인 경우에만 ans++ 해 준다.