본문 바로가기

스터디 1일 1커밋

240327 [BOJ/백준] 9934. 완전 이진 트리

 

9934번: 완전 이진 트리 (acmicpc.net)

 

9934번: 완전 이진 트리

상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래

www.acmicpc.net


나의 코드

k = int(input())
arr = list(map(int, input().split()))
ans = [[] for _ in range(k)]  # 해당되는 노드 넣는 칸 생성

def tree(arr, level):
    middle = len(arr)//2
    ans[level].append(arr[middle])
    if len(arr) == 1:
        return
    tree(arr[:middle], level+1)
    tree(arr[middle+1:], level+1)


tree(arr, 0)
for i in ans:
    print(*i)

 

결과


리스트를 반으로 나누면서 인덱스를 구하며 값을 저장하려고 했는데 어려웠다. 그래서 반으로 나누며 리스트값이 1개가 되도록 재귀함수를 구현한 것을 찾아볼 수 있었다. 많은 코드들 중에 제일 이해하기 쉬운 코드로 다시 적용하며 맞힐 수 있었다.