728x90
๋ฌธ์
ํ์ด
์ ๋ ฅ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ ๋ ธ๋์ ์์ ๋ ธ๋๋ฅผ ์ ์ฅํ๋ child ๋ฐฐ์ด์ ๋ง๋ค์๋ค.
์ญ์ ํ ๋ ธ๋์ ๊ฒฝ์ฐ child ๋ฐฐ์ด์ ์ถ๊ฐํ์ง ์์๋ค.
n = int(input())
parent = list(map(int, input().split()))
delNode = int(input())
child = [[] for _ in range(n)]
for idx in range(n):
if parent[idx] == -1 or idx == delNode:
continue
child[parent[idx]].append(idx)
์์ ๋ ธ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋ฆฌํ ๋ ธ๋์์ ์๋ฏธ
์ ๊ฑฐํ ๋ ธ๋์ ์์ ๋ ธ๋๋ค์ ์ ๋ถ ๋ฆฌํ ๋ ธ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํด๋น ๋ ธ๋์ -1 ๋์
def dfs(d):
# ๋ฆฌํ ๋
ธ๋์ธ ๊ฒฝ์ฐ
if child[d] == []:
child[d].append(-1)
return
# ๋ฆฌํ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
for c in child[d]:
dfs(c)
์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
parent = list(map(int, input().split()))
delNode = int(input())
child = [[] for _ in range(n)]
for idx in range(n):
if parent[idx] == -1 or idx == delNode:
continue
child[parent[idx]].append(idx)
def dfs(d):
# ๋ฆฌํ ๋
ธ๋์ธ ๊ฒฝ์ฐ
if child[d] == []:
child[d].append(-1)
return
# ๋ฆฌํ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
for c in child[d]:
dfs(c)
dfs(delNode)
ans = 0
for i in range(n):
if child[i] == []:
ans += 1
print(ans)
๋ง๋ฌด๋ฆฌ
ํธ๋ฆฌ์ ํน์ง์ ์ ์์์ผ ํ ์ ์๋ ๋ฌธ์
728x90