Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 세그먼트 트리
- 2357
- 해시 테이블
- 애드 혹
- DFS
- 브루트포스
- 이분 탐색
- 누적 합
- 슬라이딩 윈도우
- 정수론
- Python
- 수학
- 플로이드-워셜
- BFS
- 맵
- 모던 JavaScript 튜토리얼
- DP
- 트리
- 그래프
- 그리디
- 정렬
- 구현
- 13164
- JavaScript
- SSAFY
- 투 포인터
- 문자열
- 에라토스테네스의 체
- boj
- 싸피
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 1068 - 트리 (Python) 본문
아이디어
노드를 지운 후 BFS로 자식이 없는 리프 노드의 개수를 센다.
풀이
2차원 리스트 tree에 지울 노드를 제외한 나머지 자식 노드의 번호를 자신의 부모 노드 인덱스에 맞춰 추가한다.
BFS로 자식이 없는 리프 노드의 개수를 세어 결과값으로 출력한다.
지울 노드는 tree에 추가하지 않았으므로 탐색하지 않고 BFS가 종료된다.
N = int(input())
tree = [[] for _ in range(N)]
P = map(int, input().split())
r = int(input())
li = []
for idx, n in enumerate(P):
if idx != r:
if n >= 0:
tree[n].append(idx)
else:
li.append(idx)
res = 0
while li:
idx = li.pop()
if not tree[idx]:
res += 1
for i in tree[idx]:
li.append(i)
print(res)
'알고리즘' 카테고리의 다른 글
[BOJ] 10800 - 컬러볼 (Python) (0) | 2023.01.03 |
---|---|
[BOJ] 10775 - 공항 (Python) (0) | 2023.01.01 |
[BOJ] 1052 - 물병 (Python) (0) | 2022.12.30 |
[BOJ] 5582 - 공통 부분 문자열 (Python) (0) | 2022.12.29 |
[BOJ] 21758 - 꿀 따기 (Python) (0) | 2022.12.28 |
Comments