블로그

[프로그래머스, 자바스크립트] 알고리즘-46 스킬트리 본문

알고리즘

[프로그래머스, 자바스크립트] 알고리즘-46 스킬트리

wooluck 2020. 1. 9. 22:36

출처 : 프로그래머스 알고리즘 코딩테스트 Level.2

https://programmers.co.kr/learn/courses/30/lessons/49993?language=javascript

 

풀이 과정

 순서대로 스킬을 습득하여야한다.
그러려면 선행 스킬은 후행 스킬보다 언제나 앞에 있어야함을 유의한다.
indexOf를 사용하여 선행 스킬의 index보다 후행 스킬의 index값이 높은 지를 비교하였다. 
이 경우 선행스킬이 없을 때, indexOf는 -1을 반환하는 점을 고려하여 조건문을 작성했다.

 

답안

function solution(skill, skill_trees) {
  let result = 0;
  const skill_length = skill.length;
  const tree_length = skill_trees.length;
  for (let i = 0; i < tree_length; i += 1) {
    let check = true;
    const target = skill_trees[i];
    for (let j = 0; j < skill_length - 1; j += 1) {
      const now = target.indexOf(skill[j]);
      const next = target.indexOf(skill[j + 1])
      if (next !== -1 && now > next || now === -1 && next !== -1) {
        check = false;
        break;
      }
    }
    result += check ? 1 : 0;
  }
  return result;
}

 

Comments