9934 완전이진트리
업데이트:
1. 문제
문제는 링크에 들어가면 있다.
2. 정답 코드
문제의 내 정답 코드는 다음과 같다.
K = int(input())
array = list(map(int,input().split()))
trees = [[] for _ in range(K)]
# 변수는 global 선언을 해야하지만, 객체들을 그냥 적용되는 듯
def dfs(array,x):
mid = len(array)//2
trees[x].append(array[mid])
if len(array) == 1:
return
dfs(array[:mid],x+1)
dfs(array[mid+1:],x+1)
dfs(array,0)
for i in range(K):
print(*trees[i])
3. 생각 및 풀이
생각
이 문제는 트리에 대해 잘 아는지 묻는 문제 같다. 한번에 풀지 못했고, 인터넷을 참고했다. 이 문제는 못풀었으니 나중에 다시 풀어보도록 하자. 그러나 2가지 좋은 것을 알아냈다.
- variable은 함수에서 arg로 받지 않는 이상, global을 사용해서 지정해야했지만, 객체들은 그렇게 하지 않아도 사용 가능한 것 같다.
- *(Asterisk)에 대해 공부를 하게 되었고, 자세한 설명은 링크를 눌러 매번 복습하자.
문제 풀이
해당 문제는 이진탐색과 같은 느낌으로 dfs를 풀어내면 되는 문제였다.. 전혀 이렇게 풀어볼 생각을 하지 못했다는 것에 좀 아쉽다ㅜ 나중에 다시 풀어보자.