From 0c6950aa78273777c535a59810fd37a9cbfcb893 Mon Sep 17 00:00:00 2001 From: jjanmo Date: Thu, 14 Sep 2023 11:37:15 +0900 Subject: [PATCH] feat: solve pg200-73 --- docs/programmers200.md | 1 + pg200/73.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pg200/73.md diff --git a/docs/programmers200.md b/docs/programmers200.md index bb2dfdb..f96a0b2 100644 --- a/docs/programmers200.md +++ b/docs/programmers200.md @@ -136,3 +136,4 @@ | 70 | 23.08.23 | 23.08.24 | [압축](https://school.programmers.co.kr/learn/courses/30/lessons/17684) | Done | | | | 71 | 23.09.06 | - | [주차 요금 계산](https://school.programmers.co.kr/learn/courses/30/lessons/92341) | Done | | | | 72 | 23.09.07 | - | [삼각형의 완성조건 (2)](https://school.programmers.co.kr/learn/courses/30/lessons/120868) | Done | [✔️](/pg200/72.md) | | +| 73 | 23.09.14 | - | [스킬트리](https://school.programmers.co.kr/learn/courses/30/lessons/49993) | Done | [✔️](/pg200/73.md) | | diff --git a/pg200/73.md b/pg200/73.md new file mode 100644 index 0000000..a834dd4 --- /dev/null +++ b/pg200/73.md @@ -0,0 +1,32 @@ +# 스킬트리 + +> 성장했나?! + +해당 문제에 대해 정리하려고 남기는 글은 아니다. 이 문제는 예전에 한번 풀었다가 못풀었던 문제를 다시 푼 문제이다. 그래서 그런지 이런 상황을 극복(?)하면 뭔가 기분이 좋다. 내가 못했던 것들을 다시 해내서 그런 것 같다. 그리고 스스로 자문한다. + +`나는 성장 했나?! 혹은 성장중이 맞는 것인가?!` + +사소한 이벤트에 의미부여를 하는 것일지 모르겠지만, 그럼에도 이 시간만큼은 기분이 좋아진다는 것! 😜 + +## 풀이 의도 간략 설명 + +```js +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이 나와야한다. 왜냐하면 필터링한 스킬트리가 정상적이라면, 정상 스킬트리의 시작점부터 시작해야하기 때문이다.