반응형
문제
입력 및 출력
코드
n = int(input())
graph = [0 for _ in range(n+1)]
for i in range(n):
node = int(input())
graph[i+1] = node
for i in range(n):
cnt = 0
v = graph[i+1]
if v == -1:
print(cnt)
else:
while v != -1:
v = graph[v]
cnt += 1
print(cnt)
풀이
* graph 변수를 입력받는 노드의 크기 + 1 크기로 초기화하여, 각각의 n 노드의 부모의 위치를 저장한다.
* cnt 변수는 부모 노드로 위치한 횟수를 더하여, 해당 노드의 높이를 나타냅니다.
( v == -1 이면 루트 노드이기에 0을 출력합니다.)
* 루트 노드가 아닌 경우 graph[v]를 통해 부모 노드로 이동하여, 반복해서 부모 노드가 루트 노드인지 아닌지를 반복 확인합니다. ( 부모 노드로 이동하는 경우 cnt += 1을 통해 높이를 구한다.)
반응형
'Algorithm > Boj' 카테고리의 다른 글
[BOJ] 백준 5430 파이썬 - 바킹독 문제 풀이 (0) | 2023.10.07 |
---|---|
백준 1021 파이썬 풀이 - 바킹독 파이썬 문제 풀이 (1) | 2023.09.28 |
[백준] 24445번 : 너비우선 탐색 - 파이썬 풀이 (0) | 2023.01.20 |
[백준] 1388번 : 바닥 장식 - python 풀이 (0) | 2023.01.15 |
백준 2798 파이썬 - 블랙 (0) | 2022.05.05 |