- 문제:
- n개의 노드수를 입력하고 첫번째 1노드를 제외한 2~ n개의 부모노드를 순서대로 나열하는 문제.
https://www.acmicpc.net/problem/11725
- 풀이:
- 문제 해결 방식: DFS, 재귀 함수
-> 일단 dfs/bfs의 개념부터 알아가느라 정답을 먼저 보고 고민을 해봤다. 문제는 이해가 갔는데 정답 코드를 봐도 왜 저렇게 배열을 만드는지 이해가 안간다.. (12.28) -> 이해 완료!
import pandas as pd
import sys
n = int(input())
tree = [[] for _ in range(n+1)] # 빈 배열 생성
parent = [-1]*(n+1)
for _ in range(n-1):
a, b = map(int, input().split())
tree[a].append(b)
tree[b].append(a)
def dfs(n):
for i in tree[n]:
if parent[i] == -1:
parent[i] = n
dfs(i)
dfs(1)
for i in range(2, n+1):
print(parent[i])
--> tree의 배열을 보면 이런식으로 결과가 나오는데 각 노드 순서별로 어떤 노드와 연결되어있는지 나타내는 배열이다!
예) 0번 노드는 공백, 1번 노드와 연결된 노드는 4,6, 2번 노드와 연결된 노드는 2, 3번 노드와 연결된 노드는 5,6
* 문제 해결법: dfs 문제의 트리 노드 문제는 아예 함수 공식을 외우자!
'Language & OS > Baekjoon Online Judge' 카테고리의 다른 글
[백준] 파이썬 2775번 부녀회장이 될테야 (0) | 2023.01.10 |
---|---|
[백준] 파이썬 1463번 1로 만들기 (0) | 2023.01.03 |
[백준] 파이썬 17413번 단어 뒤집기 2 (0) | 2022.09.27 |
[백준] 파이썬 10870번, 2748번 피보나치 수 (0) | 2022.09.20 |
[백준] 파이썬 10162번 전자레인지 (0) | 2022.09.16 |