문제
풀이 과정
- 주어진 skill의 순서를 세팅한 후 skill_trees 를 차례대로 순회하며 확인하는 로직
- 어렵진 않으나 약간 헷갈림
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int solution(const char* skill, const char* skill_trees[], size_t skill_trees_len) {
int answer = 0;
int check[26] = {0, };
for (int i=0; skill[i] != '\0'; i++) {
check[skill[i] - 'A'] = i + 1;
}
for (int i=0; i<skill_trees_len; i++) {
int len = strlen(skill_trees[i]);
int flag = 0;
int cur = 1;
for (int j=0; j<=len; j++) {
int value = skill_trees[i][j] - 'A';
if (check[value] > 0) {
if (check[value] == cur) {
cur++;
} else if (check[value] > cur) {
flag = 1;
break;
}
}
}
if (flag == 0) {
answer++;
}
}
return answer;
}