Lv2. 스킬트리 Javascript
https://programmers.co.kr/learn/courses/30/lessons/49993
function solution(skill, skill_trees) {
let count = 0;
skill_trees.forEach((st) => {
let flag = true;
const skillSpread = [...skill];
for (let i = 0; i < st.length; i++) {
if (!skillSpread.includes(st[i])) continue;
if (skillSpread.shift() === st[i]) continue;
flag = false;
}
flag ? count++ : "";
});
return count;
}
function solution(skill, skill_trees) {
let count = 0;
skill_trees.forEach((st) => {
let flag = true;
// skill의 문자열을 전개연산자로 나누어서 배열에 할당
const skillSpread = [...skill];
for (let i = 0; i < st.length; i++) {
// st[i]가 없으면 넘어감 - 판단할 필요가 없기 때문
if (!skillSpread.includes(st[i])) continue;
// skillSpread의 첫번째 요소를 shift하고, 그 값과 st[i]가 같으면 넘어감
if (skillSpread.shift() === st[i]) continue;
// 위 두 조건에 만족하지 않으면 flag를 false로 변경
flag = false;
}
// flag가 true일 때만 count++
flag ? count++ : "";
});
return count;
}
- programmers 다른 사람의 풀이
// 정규식 [^] [^abc] a,b,c 제외 function solution(skill, skill_trees) { var answer = 0; var regex = new RegExp(`[^${skill}]`, 'g'); // skill에 없는 문자열을 제거한 후에 indexOf() 가 0이거나 문자열이 없는 경우를 필터링 return skill_trees .map((x) => x.replace(regex, '')) .filter((x) => { return skill.indexOf(x) === 0 || x === ""; }) .length }
댓글 환영
질문 환영
by.protect-me