스킬트리

2020.07.30

const solution = (skill, skill_trees) => {
  let count = 0;
  for (const tree of skill_trees) {
    const limit = tree.length;
    const arrOfSkill = skill.split("");
    let i;
    for (i = 0; i < limit; i++) {
      const currentSkill = tree[i];
      const currentIdx = arrOfSkill.indexOf(currentSkill);
      if (currentIdx == 0) {
        arrOfSkill.shift();
        continue;
      }
      if (currentIdx == -1) {
        continue;
      }
      break;
    }
    if (i == limit) {
      count++;
    }
  }
  return count;
};
  • level 2만 돼도 함수형으로 풀지를 못하겠네 ㅠ

  • 중첩 반복문 극혐

const solution = (skill, skill_trees) => {
  let count = 0;
  const joinedSkillTrees = skill_trees.join(":");
  const limit = joinedSkillTrees.length;
  let arrOfSkill = skill.split("");
  for (let i = 0; i < limit; i++) {
    const currentSkill = joinedSkillTrees[i];

    if (currentSkill == ":") {
      count++;
      arrOfSkill = skill.split("");
      continue;
    }
    const currentIndex = arrOfSkill.indexOf(currentSkill);

    if (currentIndex == -1) {
      if (i == limit - 1) {
        count++;
      }
      continue;
    }

    if (currentIndex == 0) {
      arrOfSkill.shift();
      if (i == limit - 1) {
        count++;
      }
      continue;
    }

    const indexForJump = joinedSkillTrees.indexOf(":", i);

    if (indexForJump == -1) {
      break;
    }

    i = indexForJump;
    arrOfSkill = skill.split("");
  }
  return count;
};
  • 중첩반복문을 쓰지 않고도 풀 수 있을 것 같아서 해봤는데 생각해보니 결국 순회는 같은 수만큼 하는 거라 별 의미 없는 짓이었다

  • 차라리 정규표현식 연습을 하는게 더 나을지도 모르겠다

0개의 댓글