본문 바로가기
Problem Solving

[Python][백준 1068] 트리

by tls1107 2024. 3. 18.
728x90
반응형

https://www.acmicpc.net/problem/1068

 

1068번: 트리

첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다

www.acmicpc.net


/*
신경써야 할 부분은 바로 :
1. 2% root노드가 0번이 아닐때 발생할수 있다. 
2. 78% 루트노드가 리프노드가 될 수 있다.
3. 99% 루트 노드를 삭제하면 0이 나와야한다. 

그래서 삭제된 노드와 자식 노드들을 모두 의미없는 값으로 채우고 
의미없는 값이 아니며, 자식 노드가 없는 노드의 수를 세면 답이다.
*/

import sys
input = sys.stdin.readline
 
n = int(input())
tree = list(map(int, input().split())) 
d = int(input())
 
def dfs(del_node):
    tree[del_node] = -2 
    for i in range(n):
        if del_node == tree[i]: 
            dfs(i)
            
dfs(d)

cnt = 0
for i in range(n):
    if tree[i] != -2 and i not in tree: 
        cnt += 1
 
print(cnt)

풀 때 어려웠던 점 또는 느낀점 :

그동안 PS를 안한 것은 아니지만

블로그를 쓰는건 오랜만이라 익숙하지가 않네요

최근에 공익 복무를 시작하며 훈련소를 다녀왔는데

확실히 다녀오니 뇌가 비워지네요...

재활 PS 열심히 해야할 것 같아요

728x90
반응형

댓글