Published:
Updated:


Solution

import sys
from typing import List


def solution(N: int, tree: List[int], remove: int):
    answer = 0

    def dfs(remove_node):
        # 나중 판별을 위한 무시해도 되는 숫자 (어차피 제거됨)
        tree[remove_node] = -999

        for i in range(N):
            # remove_node의 자식이 tree[i]라면
            if remove_node == tree[i]:
                dfs(i)

    dfs(remove)

    for i in range(N):
        # 아까 설정한 무시해도 되는 제거된 노드가 아닐 때
        # and
        # i의 자식이 없을 때
        if tree[i] != -999 and i not in tree:
            answer += 1

    return answer


N = int(sys.stdin.readline().rstrip())
tree = list(map(int, sys.stdin.readline().rstrip().split()))
remove = int(sys.stdin.readline().rstrip())

print(solution(N, tree, remove))

Leave a comment