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 |
최근댓글