문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
핵심 아이디어
- 목표 스킬 트리를 확인할 때, 목표 스킬 트리에서 아직 배우지 않은 스킬이 있어도 순서만 맞으면 유효한 스킬 트리로 간주한다.
- 목표 스킬 트리와 관련 없는 스킬은 검사 과정에서 무시한다.
- 배우려는 스킬(learned_skill)이 목표 스킬 트리의 첫 번째 스킬과 일치하지 않으면 해당 스킬 트리는 유효하지 않다. 일치할 경우, 목표 스킬 트리의 첫 번째 스킬을 제거하고 다음 스킬로 진행한다.
- 이러한 과정을 스킬 트리의 모든 스킬에 대해 반복해 최종적으로 유효한 스킬 트리의 개수를 계산한다.
정답
function solution(skill, skill_trees) {
let answer = 0;
for (const skill_tree of skill_trees) {
let copied_skill_arr = skill.split("");
let is_valid = true;
for (const learned_skill of skill_tree) {
if (!copied_skill_arr.includes(learned_skill)) {
continue;
}
if (copied_skill_arr[0] !== learned_skill) {
is_valid = false;
break;
} else {
copied_skill_arr.shift();
}
}
if (is_valid) answer++;
}
return answer;
}