Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.83 KB

73.md

File metadata and controls

32 lines (23 loc) · 1.83 KB

스킬트리

성장했나?!

해당 문제에 대해 정리하려고 남기는 글은 아니다. 이 문제는 예전에 한번 풀었다가 못풀었던 문제를 다시 푼 문제이다. 그래서 그런지 이런 상황을 극복(?)하면 뭔가 기분이 좋다. 내가 못했던 것들을 다시 해내서 그런 것 같다. 그리고 스스로 자문한다.

나는 성장 했나?! 혹은 성장중이 맞는 것인가?!

사소한 이벤트에 의미부여를 하는 것일지 모르겠지만, 그럼에도 이 시간만큼은 기분이 좋아진다는 것! 😜

풀이 의도 간략 설명

function solution(skill, skill_trees) {
  const newSkillTrees = skill_trees.map((tree) => {
    let shorten = '';
    for (let i = 0; i < tree.length; i++) {
      if (skill.includes(tree[i])) shorten += tree[i];
    }
    return shorten;
  });

  return newSkillTrees.filter((tree) => skill.indexOf(tree) === 0).length;
}

나의 풀이는...

  1. 스킬트리는 어쨌든 순서대로 들어가야하기 때문에 스킬트리에 해당하는 알파벳만을 필터링 한다.
  2. 스킬트리는 무조건 순서대로 진행된다. 중간에 끊기면 안된다. 이게 좀 애매한데, 순서대로 진행되지만 중간에 끊겨서 거기서 끝나면 오케이! 하지만 더 이어지면 그건 오류가 된다. 예를 들어, ABCD 스킬트리라고 하면, AB, ABC는 가능하지만, ABD, BCD, ABD 이런 식의 스킬트리는 만족하지 못한다는 이야기
  3. 그렇다면 마지막 할 일은 필터링한 스킬트리와 기존 주어진 정상 스킬트리를 비교해야한다. 이 때 indexOf를 사용하는데, 정상적으로 진행된 스킬트리라면 무조건 0이 나와야한다. 왜냐하면 필터링한 스킬트리가 정상적이라면, 정상 스킬트리의 시작점부터 시작해야하기 때문이다.