문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/49993
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 설명]
이 문제는 선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 문제로,
간단히 말하면 skill_trees 배열의 원소(String)가 skill 문자열의 문자를 포함한다면 포함된 문자는 skill 문자열과 선행 순서가 동일해야 한다는 것이다.

[문제 풀이]
문제는 3중 반복문을 사용하면 되었다. 스킬 트리의 원소를 하나씩 탐색하면서 스킬 트리 원소의 문자열에 skill의 문자가 포함되어 있는지를 파악하면 된다. 만약 포함된다면 해당 문자를 만들어 둔 temp 벡터에 push한 뒤 하나의 스킬 트리 원소 문자열의 반복문이 종료되었을 때 skill과 temp 벡터를 비교하여 일치하면 true를 반환한다.
#include <string>
#include <vector>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
bool isMatched = true;
for(string skill_element:skill_trees){
vector<int> temp;
for(char element_char:skill_element){
isMatched = true;
for(char skill_char:skill){
if(element_char==skill_char){
temp.push_back(element_char);
break;
}
}
}
for(int i=0;i<temp.size();i++){
if(temp[i] != skill[i]){
isMatched = false;
break;
}
}
if(isMatched)
answer++;
}
return answer;
}