-
[백준][BOJ][Python]11725_트리의부모찾기백준 2023. 5. 18. 15:05
n = input() check_list =[] tree= {} ans = {} for _ in range(n-1): check_list = list(map(int,input().split())) for num in check_list: temp_1 = check_list[num][0] temp_2 = check_list[num][1] if temp_1 not in tree: tree[temp_1] = temp_2 else: tree[temp_1].append(temp_2) if temp_2 not in tree: tree[temp_2] = temp_1 else: tree[temp_2] =temp_1 for num in range(n-1): tree[num]=
알고리시간에 푸는데
그 의사코드로는 ....이해를 했음
1. 트리라는 딕셔너리안에 1~n-1까지의 key값을 둔 다.
2. a b를 입력시 a를 key b를 value로 한 번 넣어주고, 뒤집어서 또 넣어준다
3. 재귀를 돌려서 1이라는 key값을 시작으로 그의 value값을 검사하는데, value값(6이라고 가정하면)을 key값으로 두고 그 value값을 다시 검사한다.
4. DFS로 파고들어가면서! 자식값이 충돌 되면 그의 부모는 충돌되기 전 ....value값이 된다.....인데요....
코드를 못짜겠음!!!!!!!!
일단 저 for num check_list:이부분....
무지하게 못생겨보이는 코드라 기분이 안좋습니다.
구글을 참조하여 보기쉽게 만들어보겠습니다 얍
for _ in range(n-1): tmp1, tmp2 = map(int,input().split()) tree[tmp1].append(tmp2) tree[tmp2].append(tmp1)
코드는...이렇게짜는거ㅓㄴ가요...
import sys sys.setrecursionlimit(1000000) n = input() ans = [0 for _ in range(n+1)] tree = [[] for _ in range(n+1)] for _ in range(n-1): tmp1, tmp2 = map(int,input().split()) tree[tmp1].append(tmp2) tree[tmp2].append(tmp1) def recursion(root,tree,parents): for i in tree[root]: if parents[i] ==0: parents[i]=root recursion(i, tree,parents) recursion(1,tree,ans) for i in range(2,n+1): print(ans[i])
구글로 도망치는....
728x90'백준' 카테고리의 다른 글
[백준][BOJ][Python]1991_트리순회(이진트리) (1) 2022.12.01 백준(BOJ)(Python)5639_완전 검색 트리(이진트리) (0) 2022.11.30 [백준][BOJ][JAVA]2869_달팽이는 올라가고 싶다 (0) 2022.07.28 [백준][BOJ][JAVA]2292_벌집 (0) 2022.07.27 [백준][BOJ][JAVA]1978_소수찾기 (0) 2022.07.27