2Ju0
Ju0.log
2Ju0
전체 방문자
오늘
어제
  • 🐱‍🚀 모두보기 (32)
    • CS (18)
      • LLVM (11)
      • 운영체제 (1)
      • 보안 (3)
      • 프로그래밍언어 (0)
      • 데이터과학 (3)
    • PL (1)
      • Python (1)
      • JavaScript (0)
    • Algorithm (12)
      • Python (0)
      • Javascript (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
2Ju0

Ju0.log

[Programmers] 스킬트리 - JavaScript
Algorithm/Javascript

[Programmers] 스킬트리 - JavaScript

2023. 4. 29. 12:03

문제

https://school.programmers.co.kr/learn/courses/30/lessons/49993 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

내 풀이

function solution(skill, skill_trees) {
    var answer = 0;
    
    for(let skill_tree of skill_trees){
        let stack = [...skill];
        let isPossible = true;
        
        for(let v of skill_tree){
            if(stack.includes(v)){
                if(stack[0] === v) stack.shift();
                else{
                    isPossible = false;
                    break;
                }
            }
        }
        if(isPossible) answer++;
    }
    return answer;
}

스킬트리를 스택에 복사한다. 이 스택은 선행 스킬의 순서를 지키는지 확인하기 위한 것이다. 그리고 스킬트리를 순회하면서 해당 스킬이 선행 스킬 이후에 배우는 스킬인지 아닌지 확인한다. 다시 말해, 스택 bottom 값과 동일한지 아닌지를 확인한다.

  • 스택 bottom 값과 지금 들어온 스킬 v가 같다면, 선행 스킬 이후에 배우는 스킬이다. 따라서 스택 bottom 값을 제거한다.
  • 스택 bottom 값과 지금 들어온 스킬 v가 다르다면, 선행 스킬을 지키지 않은 것이다. 따라서 불가능한 스택이므로 isPossible에 false를 할당하고 스킬트리 순회를 break한다.
저작자표시 비영리 변경금지 (새창열림)
    'Algorithm/Javascript' 카테고리의 다른 글
    • [Programmers] 기능개발 - JavaScript
    • [Programmers] 점프와 순간 이동 - JavaScript
    • [Programmers] N개의 최소공배수 - JavaScript
    • [Programmers] 캐시 - JavaScript
    2Ju0
    2Ju0

    티스토리툴바