Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Vit
- Programmers
- Python
- VirtualTryON
- image editing
- style align
- visiontransformer
- controlnext
- diffusion model
- video generation
- segmenation map generation
- DP
- BOJ
- magdiff
- 논문리뷰
- 네이버 부스트캠프 ai tech 6기
- diffusion
- segmentation map
- 코테
- video editing
- 3d editing
- score distillation
- controllable video generation
- dreammotion
- 코딩테스트
- transformer
- 3d generation
- emerdiff
- diffusion models
- 프로그래머스
Archives
- Today
- Total
평범한 필기장
[BOJ_Python] 9934_완전 이진 트리 본문
이 문제를 보면 입력의 첫째 줄에는 완전 이진 트리의 깊이가 나와있고 두번째 줄에는 방문 순서 대로 빌딩의 번호가 나와있습니다. 이 문제에서는 기준 노드를 기준으로 좌측 자식 노드를 먼저 방문하고 기준 노드를 방문하고 우측 자식 노드를 방문합니다. (inorder algorithm) 그래서 일단 저는 깊이 만큼의 빈 리스트가 있는 2차원 빈 리스트인 answer list를 만들고 각 레벨에 있는 숫자들을 빈 리스트의 인덱스에 맞게 넣을려고 했습니다. 완전 이진 트리이기 때문에 루트부터 0번째 리스트에 넣으려 했습니다. 이 완전 이진 트리의 루트는 주어진 리스트의 중앙 인덱스에 위치한 값이겠죠? 왜냐하면 완전 이진 트리 특성상 이진 트리가 완전히 꽉 채워져 있기 때문에 루트 노드를 기준으로 좌우의 노드 개수가 같기 때문입니다.
그런데 루트 노드를 기준으로 좌측도 서브 완전 이진트리가 되고 우측도 마찬가지 입니다. 이렇게 앞에서 루트 노드를 빈 리스트에 넣은 방식을 계속 반복을 하게되면 문제에서 원하는 답을 찾을 수 있겠죠? 그래서 전 재귀 함수를 통해 문제를 풀었습니다.
import sys
k = int(input())
lst = list(map(str, sys.stdin.readline().split()))
answer_lst = [[] for _ in range(k)]
def tree(lst, i = 0):
n = len(lst)
k = len(lst) // 2
# 무한대로 반복을 하지 않게 마지막 레벨까지 반복하고 끝내게 하기
if k == 0:
answer_lst[i].append(lst[k])
return
answer_lst[i].append(lst[k])
# 재귀함수를 사용한 부분!
tree(lst[:k], i + 1)
tree(lst[k+1:], i + 1)
tree(lst)
for i in range(len(answer_lst)):
print(' '.join(answer_lst[i]))
재귀 함수를 이용해야겠다는 생각은 했는데 제가 코딩 실력이 부족해서 시간이 좀 걸렸습니다ㅜㅜ
이 게시글이 첫 게시글인데 제 생각을 글로 쓴다는 것이 어렵네요. (제가 글 재주가 많이 부족합니다,,,)
부족하지만 읽어주셔서 감사합니다.
게시글을 꾸준히 쓰면서 매끄럽게 쓸 수 있도록 노력하겠습니다!!
틀린 부분이 있으면 댓글로 말씀해주시면 감사하겠습니다~
'코딩 테스트 준비 > BOJ' 카테고리의 다른 글
[BOJ_Python] 14916_거스름돈 (0) | 2023.03.18 |
---|---|
[BOJ_Python] 21919_소수 최소 공배수 (0) | 2023.03.16 |
[BOJ_Python] 2960_에라토스테네스의 체 (0) | 2023.03.15 |
[BOJ_Python] 9372_상근이의 여행 (0) | 2023.03.10 |
[BOJ_Python] 14675_단절점과 단절선 (0) | 2023.03.09 |