[Programmers] 스킬트리

Algorithm|2021. 11. 7. 15:15
반응형

조건을 너무 복잡하게 생각했었다.

다시 종이에 그리면서 해보니깐 단순했다.

머쓱 ^^

 

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

using namespace std;

int solution(string skill, vector<string> skill_trees) 
{
    int answer = 0;
    int flag = 0;

    vector<int> map(26); 
    fill(map.begin(), map.end(), -1);

    for(int i=0; i<skill_trees.size();i++)
    {
        for(int k=0; k<skill.size(); k++) 
        {    
            map[skill[k] - 65] = 21 + k; 
        }//skill_tree의 default 값을 True로 설정
        //21부터 설정한 이유는 skill_trees.size()가 최대 20이기 때문
        
        for(int k=0; k<skill_trees[i].size(); k++) 
        {   
            map[skill_trees[i][k] - 65] = k;
        } //skill_trees별 map 제작


        for(int k=1; k<skill.size(); k++) 
        {    
            if( map[skill[k-1] - 65] >= map[skill[k] - 65] )
                flag = 1;
        } //map내 skill 순서의 index가 오름차순이 아닐 경우 오답 flag

        if(flag == 0)
            answer++;

        flag = 0; //다음 스킬트리를 확인하고자 초기화
        fill(map.begin(), map.end(), -1);

    }

    return answer;
}
반응형

'Algorithm' 카테고리의 다른 글

[백준] 2799. 블라인드  (0) 2021.11.09
[백준] 4344. 평균은 넘겠지  (0) 2021.11.09
[백준] 2920 . 음계  (0) 2021.11.07
[Leetcode] 455. Assign Cookies  (0) 2021.11.07
[Leetcode] 211. Design Add and Search Words Data Structure  (0) 2021.09.28

댓글()