반응형
https://www.acmicpc.net/problem/1068
import collections
n = int(input())
parents = list(map(int, input().split()))
graph = collections.defaultdict(list)
root = None
for i in range(n):
if parents[i] == -1:
root = i
graph[parents[i]].append(i)
delete = int(input())
if root ==delete:
print(0)
quit()
global count
count = 0
def dfs(node):
global count
if node not in graph:
count += 1
return
if graph[node] ==[delete]:
count +=1
return
for next in graph[node]:
if next != delete:
dfs(next)
dfs(root)
print(count)
초반 코드는 빠르게 작성했지만 오류가 있었던 부분은
어떤 노드의 자식이 1개밖에 없는데 마침 그 자식이 delete 대상이었을 때
그 노드는 리프노드로 간주해야 한다는 것이었다.
if graph[node] ==[delete]:
count +=1
return
위의 부분이 그에 해당하는 파트다.
댓글