프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
큰 수 만들기/C++ (0) | 2023.02.03 |
---|---|
하노이의 탑/C++ (0) | 2023.02.03 |
주차 요금 계산/C++ (0) | 2023.01.20 |
땅따먹기/C++ (0) | 2023.01.18 |
k진수에서 소수 개수 구하기/C++ (0) | 2023.01.18 |