

풀이
은찬
const solution = (skill, skill_trees) => { let answer = 0; const skillChar = new Map(); for(let i = 0; i < skill.length; i++){ if(!skillChar.has(skill[i])){ skillChar.set(skill[i], true); } } for(let i = 0; i < skill_trees.length; i++){ const currentSkill = skill_trees[i]; let skillIndex = 0; let isRight = true; for(let j = 0; j < currentSkill.length; j++){ if(!skillChar.has(currentSkill[j])){ continue; } if(currentSkill[j] !== skill[skillIndex++]){ isRight = false; break; } } if(isRight){ answer++; } } return answer; }
재영
const solution = (skill, skill_trees) => { let answer = 0; for (let skillTree of skill_trees) { const filteredTree = [...skillTree] // 배열로 만들기 위함. .filter((s) => [...skill].includes(s)) // cbaf - cb -> cbd .join(""); const filteredSkill = [...skill].slice(0, filteredTree.length).join(""); if (filteredSkill === filteredTree) answer += 1; } return answer; };
효성
풀긴 했는데 뭔가 마음에 안드네요
if else도 너무 많고 canPass라는 임의변수도 있고.. 개선시킬 수 있을까요?
function solution(skill, skill_trees) { const splitSkill = skill.split(''); let answer = 0; skill_trees.forEach(skill_tree => { const splitSkillTree = skill_tree.split(''); let check = 0, canPass = true; for(const char of splitSkillTree) { if(splitSkill.includes(char)) { if(check === splitSkill.indexOf(char)) { check++; } else { canPass = false; break; } } } if(canPass) answer++; }); return answer; }