A: [0, false]
function solution(skill, skill_trees) {
const obj = {};
let result = 0;
for (const s of skill_trees) {
[...skill].forEach((s, i) => (obj[s] = [i, false]));
let flag = true;
for (let i = 0; i < s.length; ++i) {
const c = s[i];
if (!obj[c]) continue;
const prev = skill[obj[c][0] - 1];
if (obj[prev] && !obj[prev][1]) {
flag = false;
break;
}
obj[c][1] = true;
}
if (flag) ++result;
}
return result;
}
function solution(skill, skill_trees) {
const arr = [...skill];
let result = 0;
for (const s of skill_trees) {
const tmp = [];
for (const c of s) {
if (arr.includes(c)) tmp.push(c);
}
if (skill.startsWith(tmp.join(''))) ++result;
}
return result;
}
첫 번째 풀이대로 풀고 나서 뭔가 복잡한 것 같아 사람들 힌트를 참고해서 한 번 더 풀어봤다. 좀더 간단하게 풀 수도 있는 건데 너무 1차원적으로 풀어서 오히려 코드가 더 복잡해졌던 것 같다.