[BOJ / PYTHON] 11725. 트리의 부모 찾기

박제현·2023년 11월 18일
0

코딩테스트

목록 보기
10/101

from sys import stdin
import sys

sys.setrecursionlimit(10**5)

input = stdin.readline

N = int(input())

tree = list([] for _ in range(N + 1))
root = dict()
for _ in range(N - 1):
    S, E = map(int, input().split())

    tree[S].append(E)
    tree[E].append(S)


def dfs(s):

    for i in tree[s]:
        if not visited[i]:
            root[i] = s
            visited[i] = True
            dfs(i)

visited = [False] *(N + 1)
dfs(1)

for i in range(2, N+1):
    print(root[i])

풀이.

아주 쉬운 dfs 문제였는데 생각을 잘못 했다.
딕셔너리를 사용하면 dfs를 1번만 실행하면 되는 문제이다.

오답은.. 2번 부터 N번까지 bfs 반복문을 돌렸다.
자식 노드가 되면 리턴하는 형식으로 풀었지만, 그러할 경우 불필요한 방문을 계속 한다.

profile
닷넷 새싹

0개의 댓글