[Baekjoon/🥈SilverⅡ] 11725: 트리의 부모 찾기

최대 1 분 소요

Intro

문제사진 문제사진

👩 문제는 bfs, dfs 두가지 방식으로 해결할 수 있다.

  • 두 방식의 공통점은 노드를 탐색하는 과정에서 직전 노드부모노드로 설정하는 것이다.


Algoritm👩‍💻: dfs

#21.01.27
#11725: 트리의 부모 찾기

import sys
sys.setrecursionlimit(10**6)

def dfs(n):
  for i in lst[n-1]:
    if parent[i] == 0:
      parent[i] = n # 직전 노드를 부모로 지정!
      dfs(i)

N = int(sys.stdin.readline())
lst = [[] for _ in range(N)]
parent = [0 for _ in range(N+1)]

for _ in range(N-1):
  n1, n2 = map(int, sys.stdin.readline().split())
  lst[n1-1].append(n2)
  lst[n2-1].append(n1)

dfs(1)

for i in parent[2:]:
  print(i)

결과


Algorithm👨‍💻: bfs

#21.01.27
#11725: 트리의 부모 찾기

import sys

def bfs():
  global check
  queue = [1]
  while queue:
    p = queue.pop(0)
    for i in lst[p-1]:
      if parent[i] == 0:
        parent[i] = p # 직전 노드를 부모로 설정!
        queue.append(i)
  

N = int(sys.stdin.readline())
lst = [[] for _ in range(N)]
parent = [0 for _ in range(N+1)]

for _ in range(N-1):
  n1, n2 = map(int, sys.stdin.readline().split())
  lst[n1-1].append(n2)
  lst[n2-1].append(n1)

bfs()

for i in parent[2:]:
  print(i)

결과

이번 포스팅은 여기서

끝!! ~(˘▾˘~)

댓글남기기