알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 트리(1068)

HRuler 2023. 7. 22. 17:06

1. 문제

https://www.acmicpc.net/submit/1068/63887458

 

로그인

 

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# 입력 코드
# n : 노드의 개수
n = int(input())

# node : 입력받은 노드
node = list(map(int, input().split()))

# removeNode : 제거할 노드
removeNode = int(input())


# 노드 제거 코드 : 제거 대상 노드와 그 하위 노드의 값을 -2로 변경
def node_remove(deleteNode):
    global node
    global n
    node[deleteNode] = -2
    
    for i in range(n):
        if node[i] == deleteNode:
            node_remove(i)

node_remove(removeNode)


# 리프 노드 카운트 코드 : 값이 -2가 아니면서 자식이 없는 노드의 수를 카운트
cnt = 0

for i in range(n):
    if node[i] != -2:
        if i not in node:
            cnt += 1

print(cnt)