반응형
해결 방법
먼저 스킬트리의 순서를 map에 저장해두고, 뒤에 나와야 할 스킬이 앞에 나왔다면 그 스킬트리는 잘못 됐다고 판단하면 된다.
소스 코드
#include <vector>
#include <map>
using namespace std;
map<char, int> m;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
for(int i=0;i<skill.length();i++) m[skill[i]]=i; // 스킬, 스킬 인덱스 쌍을 map에 저장
int s;
bool p; // 스킬트리 사용 가능 여부
for(int i=0;i<skill_trees.size();i++){
s=0; p=true;
for(int j=0;j<skill_trees[i].size();j++){
if(m.count(skill_trees[i][j])){
if(m[skill_trees[i][j]]==s) s++;
else p=false;
}
}
if(p) answer++;
}
return answer;
}
테스트케이스 14개 모두 정답
반응형
'Algorithm > 기타 알고리즘' 카테고리의 다른 글
[시뮬레이션] 수식 최대화 - 2020 카카오 인턴십 (0) | 2022.05.14 |
---|---|
[구간합] 쿠키 구입 - Summer/Winter Coding(~2018) (0) | 2022.05.01 |
[수학] 멀쩡한 사각형 - Summer/Winter Coding(2019) (0) | 2022.04.22 |
[시뮬레이션] 행렬 테두리 회전하기 - 2021 Dev-Matching (0) | 2022.03.27 |
[투 포인터] 보석 쇼핑 - 2020 카카오 인턴십 (0) | 2022.03.20 |
댓글