BOJ/๐Ÿฅ‡

โ˜…Tree Advanced I - 1 Solvedโ˜…

metamong 2023. 12. 22.

โ˜… 1068 ํŠธ๋ฆฌ โ˜…

 

import sys
input=sys.stdin.readline

N=int(input())
l=list(map(int,input().split()))
tree=[[] for _ in range(N)]
visited=[[] for _ in range(N)]
start_node = 51
ans = 0

def dfs(tree, visited, delete_node, start_node):
    global ans
    visited[start_node] = True
    if len(tree[start_node]) == 0: #leaf-node
        ans += 1
    else:
        len_child = len(tree[start_node])
        if len_child == 1: #one child node
            child = tree[start_node][0]
            if child == delete_node: #one child is trimmed -> node itself will be leaf-node
                ans+=1
            else:
                dfs(tree, visited, delete_node, child)
        else: #two child nodes
            for v in tree[start_node]:
                if v != delete_node:
                    dfs(tree, visited, delete_node, v)

for child_node in range(len(l)):
    parent_node = l[child_node]
    if parent_node == -1:
        start_node = child_node
    else:
        tree[parent_node].append(child_node)

delete_node=int(input())

if delete_node == start_node:
    print(0)
else:
    dfs(tree, visited, delete_node, start_node)
    print(ans)

 

๐ŸŒฒ tree graph ๋งŒ๋“ค๊ธฐ → root node(-1์ผ ๋•Œ) start node๋กœ ์ฐพ๊ธฐ

 

๐ŸŒฒ

โ‘  ์‹œ์ž‘ ๋…ธ๋“œ๊ฐ€ ๊ณง ์‚ญ์ œํ•  ๋…ธ๋“œ๋ผ๋ฉด ๋…ธ๋“œ ์•„์˜ˆ ์—†์œผ๋ฏ€๋กœ 0 ์ถœ๋ ฅ

 

โ‘ก ์œ„ โ‘ ์ด ์•„๋‹ˆ๋ผ๋ฉด dfs ์‹œ์ž‘

* leaf-node ํŒ๋ณ„๋ฒ•

→ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 0์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ๋…ธ๋“œ๋Š” leaf-node →  ๋”ฐ๋ผ์„œ ๋ฐ”๋กœ ์ „์—ญ๋ณ€์ˆ˜ ans+=1 

 

→ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1์ผ ๊ฒฝ์šฐ

(1) ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œํ•  ๋…ธ๋“œ๋ผ๋ฉด ํ•ด๋‹น ๋…ธ๋“œ๋Š” leaf-node → ์ „์—ญ๋ณ€์ˆ˜ ans+=1

(2) ์‚ญ์ œํ•  ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด dfs ์‹œ์ž‘

 

→ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ผ ๊ฒฝ์šฐ ์‚ญ์ œํ•  ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ์ž์‹ ๋…ธ๋“œ๋ผ๋ฉด dfs ์‹œ์ž‘

 

๐ŸŒฒ dfs๋ฅผ ๋Œ๋˜, ์‚ญ์ œํ•  ๋…ธ๋“œ๊ฐ€ ๋”ฑ 1๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ถ€๋ถ„๋งŒ ์ฃผ์˜ํ•ด์„œ if๋ฌธ์— ๋งž๊ฒŒ dfs ๋Œ๋ฉด์„œ leaf-node ๊ฐœ์ˆ˜ ์„ธ์–ด์ฃผ๋Š” ์œ ํ˜•

child node์˜ ๊ฐœ์ˆ˜์™€ delete node๊ฐ€ child node์ธ์ง€์— ๋”ฐ๋ผ 5๊ฐ€์ง€ case๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'BOJ > ๐Ÿฅ‡' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

โ˜…Binary Search Advanced I - 2 Solvedโ˜…  (0) 2023.12.29
โ˜…Coordinate Compression Advanced - 2 Solvedโ˜…  (0) 2023.12.28
โ˜…BFS&DFS Advanced I - 10 Solvedโ˜…  (0) 2023.12.15
โ˜…Greedy Upper-Advanced I - 1 Solvedโ˜…  (1) 2023.10.18
โ˜…BF Advanced I - 3 Solvedโ˜…  (0) 2023.10.06

๋Œ“๊ธ€