const solution = (skill, skill_trees) => {
let count = 0;
for (const tree of skill_trees) {
const limit = tree.length;
const arrOfSkill = skill.split("");
let i;
for (i = 0; i < limit; i++) {
const currentSkill = tree[i];
const currentIdx = arrOfSkill.indexOf(currentSkill);
if (currentIdx == 0) {
arrOfSkill.shift();
continue;
}
if (currentIdx == -1) {
continue;
}
break;
}
if (i == limit) {
count++;
}
}
return count;
};
level 2만 돼도 함수형으로 풀지를 못하겠네 ㅠ
중첩 반복문 극혐
const solution = (skill, skill_trees) => {
let count = 0;
const joinedSkillTrees = skill_trees.join(":");
const limit = joinedSkillTrees.length;
let arrOfSkill = skill.split("");
for (let i = 0; i < limit; i++) {
const currentSkill = joinedSkillTrees[i];
if (currentSkill == ":") {
count++;
arrOfSkill = skill.split("");
continue;
}
const currentIndex = arrOfSkill.indexOf(currentSkill);
if (currentIndex == -1) {
if (i == limit - 1) {
count++;
}
continue;
}
if (currentIndex == 0) {
arrOfSkill.shift();
if (i == limit - 1) {
count++;
}
continue;
}
const indexForJump = joinedSkillTrees.indexOf(":", i);
if (indexForJump == -1) {
break;
}
i = indexForJump;
arrOfSkill = skill.split("");
}
return count;
};
중첩반복문을 쓰지 않고도 풀 수 있을 것 같아서 해봤는데 생각해보니 결국 순회는 같은 수만큼 하는 거라 별 의미 없는 짓이었다
차라리 정규표현식 연습을 하는게 더 나을지도 모르겠다