https://www.acmicpc.net/problem/11725
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
취업준비를 위해 본격적으로 코딩테스트 문제를 다시 풀어보았습니다. 해당 문제의 난이도는 실버2이며 분류는 트리입니다. 트리 문제의 풀이법을 알면 쉽게 풀 수 있는 문제입니다.
풀이 방식은 다음과 같습니다.
1. 그래프를 먼저 만든다.
2. 1부터 BFS를 수행합니다.
3. 큐에 넣기 전 현재 노드의 번호를 부모로 저장합니다.
코드
import sys
from collections import defaultdict, deque
input = lambda: sys.stdin.readline().rstrip()
graph = defaultdict(list)
N = int(input())
parents = [0] * (N + 1)
visited = [False] * (N + 1)
q = deque()
for _ in range(N - 1):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
q.append(1)
while q:
now = q.popleft()
children = graph[now]
for c in children:
if parents[c] == 0:
parents[c] = now
q.append(c)
for parent in parents[2:]:
print(parent)
'백준' 카테고리의 다른 글
백준 1948 임계경로 (파이썬) (1) | 2024.01.05 |
---|---|
백준 20442 ㅋㅋ루ㅋㅋ (파이썬) (2) | 2024.01.03 |
백준 1493 박스 채우기 (파이썬) (2) | 2024.01.03 |
백준 21277 짠돌이 호석 (파이썬) (1) | 2024.01.02 |
백준 22870 산책(large) (파이썬) (0) | 2023.12.31 |