프로그래머스 Level 2 - 스킬트리
📌 생각한 풀이 방법
- 존재하는 skill을 skillObj에 저장한다.
- skillObj에 존재하는 값이 나오는 경우, 해당 값을 currentOrder에 추가한다.
- currentOrder가 만족하는 스킬트리인 경우 answer값을 증가시킨다.
- 2~3을 skill_trees 수만큼 반복한다.
📌 풀이
function solution(skill, skill_trees) {
let skillArr = skill.split("");
let skillObj = {};
let totalArr = [];
for (let i = 0; i < skillArr.length; i++) {
skillObj[skillArr[i]] = i + 1;
totalArr.push(i + 1);
}
let answer = 0;
for (let i = 0; i < skill_trees.length; i++) {
let currentTree = skill_trees[i];
let currentOrder = [];
for (let j = 0; j < currentTree.length; j++) {
if (skillObj[currentTree[j]]) {
currentOrder.push(skillObj[currentTree[j]]);
}
}
let totalOrder = currentOrder.join("");
currentOrder.sort((a, b) => a - b);
if (
totalOrder === currentOrder.join("") &&
totalArr.join("").includes(currentOrder.join(""))
) {
if (currentOrder.length < 1 || currentOrder[0] === 1) {
answer++;
}
}
}
return answer;
}