[프로그래머스] 스킬트리(javascript)

프린이·2020년 11월 24일
0

  • 제 코드는 최선의 방안은 아닙니다.
  • 단순히 기록용, 공유용이니 이 점 보실 때, 참고바랍니다!

🔗 문제 링크

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

📙 내가 생각한 풀이 과정

  • 첫 스킬의 존재 유무를 먼저 확인.
  • 첫 스킬 존재할 시,
    1) 첫 스킬보다 뒷 스킬을 먼저 배우는지 확인
    2) 중간 스킬을 건너뛰고 중간 스킬 이후 스킬을 먼저 배우는지 확인
    3) 1, 2에 해당되지않을 때 비로소 가능함
  • 첫 스킬이 존재하지 않을 시,
    1) 첫 스킬을 건너뛰고 뒷 스킬을 먼저 배우는지 확인
    2) 주어진 스킬을 전부 배우지 않고 아예 다른 스킬들의 조합으로만 한다면 가능함.

📝 답안 코드

function solution(skill, skill_trees) {
    var answer = 0, remem2 = 0;
    skill = skill.split("");
    var tOrf;
    
    for(var i = 0; i < skill_trees.length; i++){
    	//첫 스킬 배웠을 때,
        if(skill_trees[i].indexOf(skill[0]) > -1){
            var remem = -1;
            for(var j = 0; j < skill.length; j++){
                if(skill_trees[i].indexOf(skill[j]) > -1){
                	//첫 스킬보다 뒷 스킬을 먼저 했는지 확인
                    if(skill_trees[i].indexOf(skill[j]) > remem){
                        remem = skill_trees[i].indexOf(skill[j]); 
                      //중간 스킬 건너 뛰고 그 이후 스킬했는지 확인
                        if(j-remem2 <= 1){
                            tOrf = true;
                            remem2 = j;
                        }else{
                            tOrf = false;
                            break;
                        }
                    }
                    else{
                        tOrf = false;
                        break;
                    }
                }
            }
            if(tOrf)
                answer++;
        }
      //첫 스킬 안배웠을 때,
        else{
            var cnt = 0;
            for(var j = 1; j < skill.length; j++){
            	//주어진 스킬을 하나도 안하고 전혀 다른 스킬들로 구성된 것도 가능한 것이기 때문에 그 부분 확인중
                if(skill_trees[i].indexOf(skill[j]) == -1){
                    cnt++;
                }
                //첫 스킬은 안하고 뒷 스킬부터 배울 때,
                else{
                    break;
                }
                  
            }
            if(cnt == skill.length-1)
                answer++;
        }
    }
    return answer;
}

😢 아쉬운 점

  • 다른분들은 조건 많이 거치지않고도 하셨던데 조금 무식하게 코딩한 것 같아 아쉬움이 남는 코드
profile
주니어 프론트엔드개발자

1개의 댓글

comment-user-thumbnail
2020년 11월 25일

멋져욤 : )

답글 달기