알고리즘 풀이 - 스킬트리

picture 22

스킬트리

문제 링크

문제 요약

제한사항

  • 스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
  • 스킬 순서와 스킬트리는 문자열로 표기합니다.
  • 예를 들어, C → B → D 라면 CBD로 표기합니다
  • 선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해 주어지지 않습니다.
  • skill_trees는 길이 1 이상 20 이하인 배열입니다.
  • skill_trees의 원소는 스킬을 나타내는 문자열입니다.
  • skill_trees의 원소는 길이가 2 이상 26 이하인 문자열이며, 스킬이 중복해 주어지지 않습니다.

Input

  • 선행 스킬 순서 skill,
  • 유저들이 만든 스킬트리를 담은 배열 skill_trees

output

  • 가능한 스킬트리 개수

해결방법

  • skill_trees에서 skill에 있는 skill들만 남겨둔다면

    • skill.join("") === skill_trees[n].join("")이 기대된다
  • 정제된 스킬트리를 skill에서 조회했을 때 index 0에 나오는 경우가 아니면 배울 수 없다.
  • 해당 경우로 filtering을 수행하면 배울 수 있는 스킬트리만 나옴.
function solution(skill, skill_trees) {
  return skill_trees.filter(st => {
    const result = st
      .split('')
      .filter(s => skill.includes(s))
      .join('')
    return skill.indexOf(result) === 0
  }).length
}

Written by@박대성

독서와 지식관리에 관심이 많은 개발자

GitHub