프로그래머스 LV2 #2 스킬트리
이 문제는 게임을 좀 플레이해본 사람들이라면 쉽게 이해가 되는 개념입니다. 어떤 선행 스킬을 배우지 않고서는 그 이후의 스킬을 배울 수 없는 개념으로 생각하시면 됩니다.
이 문제가 그래도 쉬운 이유는 그래도 중복된 스킬이 없다는 것입니다.
이 문제의 풀이의 핵심은
skill
에 존재하는지 그 인덱스가 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