🕊 Link

Lv2. 스킬트리 Javascript
https://programmers.co.kr/learn/courses/30/lessons/49993

🧑🏻‍💻 Code(javascript)

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;
}

💡 Solution

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;
}

👨🏻‍💻💭 Self Feedback

  • 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
}

  • 2021.04.20 - 최초 작성

댓글 환영 질문 환영
by.protect-me

profile
protect me from what i want

0개의 댓글