반응형
문제 설명
입력과 출력
입출력 예제
# 입력
5
-1 0 0 1 1
2
# 출력
2
풀이 코드
정답 코드
import sys
input = sys.stdin.readline
n = int(input())
tree = list(map(int, input().split()))
delete = int(input())
def dfs(del_node):
tree[del_node] = -10 # 의미없는 숫자를 부여해 제거함을 의미
for i in range(n):
if del_node == tree[i]: # tree[i]가 del_node의 자식이면 재귀를 통해 삭제
dfs(i)
dfs(delete)
cnt = 0
for i in range(n):
if tree[i] != -10 and i not in tree: # 제거된 노드가 아니고 i의 자식이 없다면
cnt += 1
print(cnt)
예제에 해당하는 대로 트리를 그려보면 다음과 같습니다.
2번을 제거 했을 때 더 이상 자식이 없는 리프노드는 3번, 4번 노드로 정답은 2
부가적인 설명은 주석에 달아 놓아 위 그림을 참고하여 코드를 작성해본다면 쉽게 이해가 될 겁니다.
'◼ 코딩테스트 > DFS,BFS' 카테고리의 다른 글
[Python/파이썬] 백준 1937 - 욕심쟁이 판다 (0) | 2023.05.19 |
---|---|
[Python/파이썬] 백준 9466 - 텀 프로젝트 (0) | 2023.05.18 |
[Python/파이썬] 백준 1167 - 트리의 지름 (DFS / BFS) (0) | 2023.05.17 |
[Python/파이썬] 백준 1967 - 트리의 지름 (DFS / BFS) (0) | 2023.05.17 |
[Java/자바] 프로그래머스 Lv2 - 소수 찾기 (완전탐색/DFS) (0) | 2023.02.09 |