문제 링크 : 스킬 트리
public int solution(String skill, String[] skill_trees) {
int unvalid = 0;
Map<Character, Integer> skillTree = new HashMap<>();
for(int i = 0; i < skill.length(); i++){
skillTree.put(skill.charAt(i), i);
}
for(String skill_tree: skill_trees){
int index = 0;
for(int i = 0; i < skill_tree.length(); i++){
if(skillTree.get(skill_tree.charAt(i)) != null){
if(skillTree.get(skill_tree.charAt(i)) > index){
unvalid++;
break;
}else if(skillTree.get(skill_tree.charAt(i)) == index){
index++;
}
}
}
}
return skill_trees.length - unvalid;
}
먼저 정해진 스킬트리인 skill에 주어진 순서대로 0, 1, 2... 를 맵핑해서 skillTree Map에 저장한다.
그 후 skill_trees에 저장된 스킬 순서를 돌면서 Map에 저장된 value의 순서대로 나타나는지 확인하고, 아니라면 unvalid에 1씩 증가한다.
그 후 skill_trees의 길이에서 unvalid를 빼서 반환한다.