프로그래머스/2레벨

스킬트리/C++

Koalitsiya 2023. 2. 3. 15:37
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이방법

변수 2개와 find 함수를 이용하여 각 스킬트리가 선행 스킬 순서를 만족하는지를 검사하였다.

 

1. 스킬트리가 조건을 만족했는지 검사하기 위한 변수들을 선언한다.

2. skill_trees[i][j]가 skill에 있는지 확인하고 없다면 계속 진행, 있다면 idx와 next를 이용해 순서가 맞는지까지 확인하고 만약 순서가 맞지 않는다면 잘못된 스킬트리이므로 flag = false로 하고 break한다.

3. flag가 true이면 가능한 스킬트리이므로 answer++한다.

#include <string>
#include <vector>

using namespace std;

int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    
    for(int i = 0; i < skill_trees.size(); i++) {
        bool flag = true;
        int idx = 0, next = 0;
        
        for(int j = 0; j < skill_trees[i].size(); j++) {
            idx = skill.find(skill_trees[i][j]);
            if(idx == - 1) continue;
            else {
                if(idx != next++) {
                    flag = false;
                    break;
                }
            }
        }
        if(flag == true)
            answer++;
    }
    
    return answer;
}