이것저것

프로그래머스 Level2 - 스킬트리 본문

Problem Solving

프로그래머스 Level2 - 스킬트리

nays111 2021. 2. 22. 22:44

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

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr


풀이과정

이번 문제도 일반적인 풀이와는 조금 다르게 푼 거 같다(?)

만약 스킬트리 중에 스킬이 존재하면 그 스킬트리에서 나타나는 스킬에 인덱스를 미리 메모해두었다.

예를 들어

CBD 일 경우 ⇒ 스킬의 인덱스는 순서대로 0,1,2이다.

스킬트리 BACDE ⇒ 1 0 2 (A랑 E는 신경 쓸 필요가 없음 , B 스킬 인덱스는 1, C스킬 인덱스는 0, D 스킬 인덱스는 2)

이런식으로 미리 메모를 해두었다.

이 메모는 무조건 0부터 시작해야한다. 그리고 0→1→2 순서대로 건너뛰지 않고 진행되는 경우만 카운트해주면 답을 구할 수 있었다.


#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    for(int i=0;i<skill_trees.size();i++){
        string target = skill_trees[i];
        vector<int> memo;
        for(int j=0;j<target.size();j++){


            for(int k=0;k<skill.size();k++){
                if(target[j]==skill[k]){
                    memo.push_back(k);

                }
            }
        }

        bool flag = false;
        for(int j=0;j<memo.size();j++){

            if(memo[j]!=j){
                flag = true;
            }
        }
        if(flag==false){
            answer++;
        }


    }



    return answer;
}
Comments