minyeamer
Minystory
minyeamer
edit settings
전체 방문자
오늘
어제
  • Category List (104)
    • Books (5)
      • Book Reviews (1)
      • Paper Reviews (4)
    • Life (4)
      • Blog (3)
      • Item Reviews (0)
      • Thoughts (1)
    • Study (37)
      • 2022 (3)
      • AI SCHOOL (34)
      • References (0)
    • Tech (58)
      • Algorithm (47)
      • Projects (9)
      • Python (2)

Blog Menu

  • Home
  • Notice
  • Tags
  • Guest

Popular Posts

Recent Comments

Recent Posts

hELLO
minyeamer

Minystory

Tech/Algorithm

[백준 11725] 트리의 부모 찾기 (Python)

2022. 8. 18. 09:56

문제 링크

https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net

문제 해설

Idea

  • BFS
  • 1번 노드부터 BFS를 수행하면서 다음 노드에 순차적으로 접근
  • 다음 노드가 이미 방문한 노드의 경우 부모 노드라 판단하여 배열에 저장
  • 부모 노드가 저장된 배열에 대해 2번 노드부터 순차적으로 부모 노드를 출력

Time Complexity

  • O(N+E) = 200,000

Data Size

  • N: 2 <= int <= 100,000

해설 코드

from collections import deque
import sys
input = sys.stdin.readline

N = int(input())
graph = [[] for _ in range(N+1)]
visited = [False] * (N+1)
parents = [1] * (N+1)

for _ in range(N-1):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)

queue = deque([1])
visited[1] = True
while queue:
    node = queue.popleft()
    for next in graph[node]:
        if not visited[next]:
            queue.append(next)
            visited[next] = True
        else:
            parents[node] = next

for parent in parents[2:]:
    print(parent)
저작자표시 (새창열림)

'Tech > Algorithm' 카테고리의 다른 글

[프로그래머스]다단계 칫솔 판매 (Python)  (0) 2022.08.21
[백준 1182] 부분수열의 합 (Python)  (0) 2022.08.18
[프로그래머스] 쿼드압축 후 개수 세기 (Python)  (0) 2022.08.17
[프로그래머스]n^2 배열 자르기 (Python)  (0) 2022.08.16
[프로그래머스]n진수 게임 (Python)  (0) 2022.08.16
    'Tech/Algorithm' 카테고리의 다른 글
    • [프로그래머스]다단계 칫솔 판매 (Python)
    • [백준 1182] 부분수열의 합 (Python)
    • [프로그래머스] 쿼드압축 후 개수 세기 (Python)
    • [프로그래머스]n^2 배열 자르기 (Python)
    minyeamer
    minyeamer
    Better than Yesterday

    티스토리툴바