[Python] 백준 #11725- 트리의 부모 찾기

2023. 9. 5. 14:13·코딩테스트/백준[Python]

문제


 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

코드


My answer

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

def bfs(idx):
    Q=deque()
    Q.append(idx)
    visited[idx]=1
    
    while Q:
        a=Q.popleft()
        for i in graph[a]:
            if(visited[i]==0):
                parents[i]=a
                Q.append(i)
                visited[i]=1
    return 0

n=int(input())

graph=[[] for _ in range(n+1)]
visited=[0 for i in range(n+1)]
parents=[0 for i in range(n+1)]

for i in range(n-1):
    a,b=map(int,input().split())
    graph[a].append(b)
    graph[b].append(a)
bfs(1)
print(*parents[2:])

Another answer

import sys
input=sys.stdin.readline
sys.setrecursionlimit(10**9)

N = int(input())

Tree = [[] for _ in range(N+1)]
Parents = [0 for _ in range(N+1)]

for _ in range(N-1) :
    a, b = map(int, input().split())
    Tree[a].append(b)
    Tree[b].append(a)

def DFS(start, tree, parents) :
    for i in tree[start] :
        if parents[i] == 0 :
            parents[i] = start
            DFS(i, tree, parents)

DFS(1, Tree, Parents)

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

풀이


우선 나는 bfs로 해결했다. 동일한 방법으로 bfs 함수를 생성하고, 돌면서 부모 노드번호를 parents라는 배열에 저장했다. 다른 분들 코드를 보고 생각해보니, 굳이 parents란 배열을 생성하지 않고 그냥 visited에 1대신 부모 노드 번호를 넣으면 메모리도 아낄 수 있을 것이다. 

another answer은 dfs로 푼 코드를 가져왔다. 

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python] 백준 #1012- 유기농 배추  (0) 2023.09.05
[Python] 백준 #1325- 효율적인 해킹  (0) 2023.09.05
[Python] 백준 #1260- DFS와 BFS  (0) 2023.09.05
[Python] 백준 #2606 - 바이러스  (0) 2023.09.04
[Python] 백준 #2979 - 트럭 주차  (0) 2023.09.02
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python] 백준 #1012- 유기농 배추
  • [Python] 백준 #1325- 효율적인 해킹
  • [Python] 백준 #1260- DFS와 BFS
  • [Python] 백준 #2606 - 바이러스
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home
    • ✏️글쓰기
    • 💻 관리자

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    나동빈
    이것이취업을위한코딩테스트다
    이분탐색
    이코테
    dp
    파이썬
    그리디
    BFS
    DFS
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

  • Profile
  • Light
상단으로

티스토리툴바