삭제되었다는 노드의 표시를 -2로 두고,
삭제된 노드를 부모로 갖는 모든 노드를 삭제시킨다.
그 후에 삭제가 되지 않았으면서 부모가 없는 노드의 갯수를 세서 리턴해주었다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = Number(input[0]);
const data = input[1].split(' ').map(Number);
const delNode = Number(input[2]);
const DELETED = -2;
const solution = (N, arr, delNode) => {
const dfs = (del) => {
arr[del] = DELETED;
for (let i = 0; i < N; i++) {
if (del === arr[i]) dfs(i);
}
};
dfs(delNode);
return arr.filter((v, idx) => v !== DELETED && !arr.includes(idx)).length;
};
console.log(solution(N, data, delNode));