티스토리 뷰

< 해설 >

문제의 포인트는 CBD 가 스킬트리라면

C, CB, CBD는 가능하지만

B , D, DC, BC 등은 불가능 하단 것이다.

 

쉽게 문제를 풀기위해서 스킬트리에 있는 스킬들만 순서대로 저장하는 벡터를 만들었다. 스킬트리에 있는 스킬들만 저장하므로 저장된 스킬들이 주어진 스킬트리와 같은 순서를 띄는지만 보면된다.

["BACDE", "CBADF", "AECB", "BDA"] 가 있을 때 스킬트리의 스킬들만 저장하면 

["BCD", "CBD", "CB", "BD"] 가 될 것이다. 저장한 스킬 트리의 길이에 맞춰 CBD를 비교하여 동일하면 answer값을 올리면 된다.

 

< 문제 >

 

< 풀이 >

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

using namespace std;

int solution(string skill, vector<string> skill_trees) {
    int answer = 0; 
    vector<string> newSkillVec;
    
    for(auto s_t : skill_trees)
    {        
        string pushStr = "";
        for(auto s : s_t)
        {
            for(int i=0; i<skill.size(); i++)
            {
                if(s == skill[i])
                {
                    pushStr += s;
                    break;
                }
            }
        }
        newSkillVec.push_back(pushStr);
    }
    
    for(auto s_v : newSkillVec)
    {
        if(s_v == "")
        {
            answer++;
            continue;
        }   
        
        string compStr = skill.substr(0, s_v.size());
        if(compStr == s_v)
            answer++;
    }
    
    return answer;
}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함