성장했나?!
해당 문제에 대해 정리하려고 남기는 글은 아니다. 이 문제는 예전에 한번 풀었다가 못풀었던 문제를 다시 푼 문제이다. 그래서 그런지 이런 상황을 극복(?)하면 뭔가 기분이 좋다. 내가 못했던 것들을 다시 해내서 그런 것 같다. 그리고 스스로 자문한다.
나는 성장 했나?! 혹은 성장중이 맞는 것인가?!
사소한 이벤트에 의미부여를 하는 것일지 모르겠지만, 그럼에도 이 시간만큼은 기분이 좋아진다는 것! 😜
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;
}
나의 풀이는...
- 스킬트리는 어쨌든 순서대로 들어가야하기 때문에 스킬트리에 해당하는 알파벳만을 필터링 한다.
- 스킬트리는 무조건 순서대로 진행된다. 중간에 끊기면 안된다. 이게 좀 애매한데, 순서대로 진행되지만 중간에 끊겨서 거기서 끝나면 오케이! 하지만 더 이어지면 그건 오류가 된다. 예를 들어, ABCD 스킬트리라고 하면, AB, ABC는 가능하지만, ABD, BCD, ABD 이런 식의 스킬트리는 만족하지 못한다는 이야기
- 그렇다면 마지막 할 일은 필터링한 스킬트리와 기존 주어진
정상
스킬트리를 비교해야한다. 이 때 indexOf를 사용하는데, 정상적으로 진행된 스킬트리라면 무조건 0이 나와야한다. 왜냐하면 필터링한 스킬트리가 정상적이라면, 정상 스킬트리의 시작점부터 시작해야하기 때문이다.