https://programmers.co.kr/learn/courses/30/lessons/49993
function solution(skill, skill_trees) {
let answer=0;
for(let curriculum of skill_trees){
let tmp=skill;
let ch=true;
for(let x of curriculum){
if(tmp.includes(x) && tmp.indexOf(x)!==0){
ch=false;
break;
}
else if(tmp.includes(x) && tmp.indexOf(x)===0){
tmp=tmp.replace(x, '');
}
}
if(ch) answer++;
}
return answer;
}
이전에 비슷한 문제를 풀어서 그런지, 빨리 풀린 문제이다. ch배열을 사용해서 가능한 스킬트리인지 확인 후 answer++를 해주면 된다.
function solution(skill, skill_trees) {
var answer = 0;
var regex = new RegExp(`[^${skill}]`, 'g');
return skill_trees
.map((x) => x.replace(regex, ''))
.filter((x) => {
return skill.indexOf(x) === 0 || x === "";
})
.length
}
다른분이 정규표현식으로 작성한 코드가 신박해서, 가져와봤다.
new RegExp
를 사용해서 새로운 정규식을 만든다. 여기서 [^${skill}]은, ${skill}이 아닌 것을 가져온다. 즉, x.replace(regex, '')은 x문자열에서 skill('cbd')에 해당하지 않는 문자를 삭제한다.
아래 원리를 사용해서 filtering 후 length를 리턴하면 된다.
이런식으로 정규식을 사용하다니... 신박하다!