// 테케 2,5,14 통과
function solution(skill, skill_trees) {
var answer = 0;
let skillSet = skill.split("");
let currentCheck = 0;
skill_trees.forEach((skill_tree) => {
let isPossible = true;
for (let c of skill_tree) {
for (let i = currentCheck + 1; i < skillSet.length; i++) {
if (skillSet[i] === c) {
isPossible = false;
currentCheck++;
}
break;
}
if (!isPossible) return;
}
answer++;
});
return answer;
}
// 통과 +6
// 시간복잡도 : O(s+st*item.length*(s-currentCheck))
function solution(skill, skill_trees) {
var answer = 0;
let skillSet = skill.split("");
skill_trees.forEach((skill_tree) => {
let isPossible = true;
let currentChar = 0;
for (let c of skill_tree) {
if (c === skillSet[currentChar]) {
// 스킬셋과 단어 위치가 같으면, 다음 단어를 체크.
currentChar++;
continue;
}
for (let i = currentChar + 1; i < skillSet.length; i++) {
// 단어가 다를 경우에는, skillset을 돌며 같은 단어가 있는지 확인
if (skillSet[i] === c) {
isPossible = false;
break;
// 있을 경우, 선행 스킬을 배우지 않았으므로 answer값 증가 없이 forEach문 다음 item 순회
}
}
// 만약 skillset에 포함된 단어가 모두 포함되지 않을 경우, skill_tree의 다음 문자를 skillset과 비교
if (!isPossible) return;
}
answer++;
});
return answer;
}
스킬트리
Level
Recruitment