HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
👻
개발 기록
/
코딩테스트 스터디
코딩테스트 스터디
/
스킬트리

스킬트리

notion image
notion image

풀이

은찬
재영
효성

풀긴 했는데 뭔가 마음에 안드네요

if else도 너무 많고 canPass라는 임의변수도 있고.. 개선시킬 수 있을까요?
Link
https://programmers.co.kr/learn/courses/30/lessons/49993
Deadline
Jan 29, 2022
Status
Archived
Type
Topology sort
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; };
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; }