9934번: 완전 이진 트리
상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래
www.acmicpc.net
BFS를 통해 해결하자!
- 배열의 중간값이 루트이고 루트를 기준으로 왼쪽 서브루트와 오른쪽 서브루트로 나눌 수 있다.
- makeTree함수를 통해 서브트리와 현재 깊이를 전달한다.
import sys input = sys.stdin.readline K = int(input()) _input = list(map(int, input().split())) tree = [[] for _ in range(K)] def makeTree(arr, x): mid = (len(arr)//2) tree[x].append(arr[mid]) if len(arr) == 1: return makeTree(arr[:mid], x+1) makeTree(arr[mid+1:], x+1) makeTree(_input, 0) for i in range(K): print(*tree[i])
'개발 > 알고리즘' 카테고리의 다른 글
[백준 2638] 치즈 (python) (0) | 2021.06.02 |
---|---|
[백준 16719] ZOAC (python) (0) | 2021.05.31 |
[백준 9470] Strahler 순서 (python) (0) | 2021.05.31 |
[백준 15918] 랭퍼든 수열쟁이야!! (python) (0) | 2021.05.30 |
[백준 8980] 택배 (python) (0) | 2021.05.29 |
최근댓글