Post

[Summer/Winter Coding(~2018)] 스킬트리 (C++)

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

풀이

스킬트리의 스킬 중 skill에 포함되는 스킬로만 구성된 문자열을 만들어준 후, 해당 문자열이 skill에 포함되면 answer를 증가시켜주었다. 이 때, skill에 포함되어도 가장 앞에 오는 첫 번째 스킬이 빠져 있으면 불가능한 스킬트리이기 때문에 skill.find()의 반환값이 0일 때만 증가시키도록 했다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include <vector>

using namespace std;

int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    for(auto t : skill_trees){
        string include_skill = "";
        for(auto c : t)
            if(skill.find(c) != string::npos)   include_skill += c;
        if(skill.find(include_skill) == 0)  answer++;
    }
    return answer;
}
This post is licensed under CC BY 4.0 by the author.