프로그래머스 LV2 #2 스킬트리

Jake Seo·2020년 7월 19일
0

프로그래머스 LV2

목록 보기
2/10

프로그래머스 LV2 #2 스킬트리

문제

풀이

이 문제는 게임을 좀 플레이해본 사람들이라면 쉽게 이해가 되는 개념입니다. 어떤 선행 스킬을 배우지 않고서는 그 이후의 스킬을 배울 수 없는 개념으로 생각하시면 됩니다.

이 문제가 그래도 쉬운 이유는 그래도 중복된 스킬이 없다는 것입니다.

이 문제의 풀이의 핵심은

  1. 선행 스킬이 필요한 스킬만을 남겨두고 나머지는 전부 지웁니다.
    • 위의 예에서는 "CBD"
  2. 선행 스킬이 필요한 스킬들이 순서대로 찍혔는지 확인하기 위해 해당 패턴이 skill에 존재하는지 그 인덱스가 0인지 확인합니다.
  3. 존재하며, 인덱스가 0이면 맞게 찍힌 것입니다.

ex) 선행스킬 순서가 CBD일 때, C? CBD의 가장 앞 C에 해당하므로 인덱스 0 -> 가능
ex) 선행스킬 순서가 CBD일 때, BD? CBD에서 BD에 해당하므로 인덱스 1 -> 불가능

이런식으로 생각하여 indexOf에서 인덱스가 0인 것만 필터링한 뒤에, length를 구하면 정답이 됩니다.

let solution = (skill, skill_trees) => skill_trees.map(x => x.replace(new RegExp(`[^${skill}]`, 'g'), '')).filter(x => skill.indexOf(x) === 0 || x === "").length
profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글