문제 출처 : www.acmicpc.net/problem/5639
문제 해석 : 이진 트리의 트리를 순회하여 출력하는 문제이다.
문제 풀이 : 주어진 순회를 입력 받아 이를 이진 트리임에 유의하여 더 커지는 순간이 자신의 루트라는 것을 생각하여 재 구성하여 출력하면 된다.
풀이 코드
def solution(start, end):
if start > end:
return
div = end + 1
for i in range(start + 1, end + 1):
# 루트 보다 큰 지점 --> 오른쪽 서브 트리
if tree[start] < tree[i]:
div = i
break
solution(start + 1, div - 1)
solution(div, end)
print(tree[start])
import sys
sys.setrecursionlimit(10 ** 9)
tree = []
count = 0
while count <= 10000:
try:
temp = int(input())
except:
break
tree.append(temp)
count += 1
solution(0, len(tree) - 1)
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 9663 N-Queen 문제 풀이 (0) | 2021.01.26 |
---|---|
[알고리즘][Python] 백준 9465 스티커 문제 풀이 (0) | 2021.01.25 |
[알고리즘][Python] 백준 2638 치즈 문제 풀이 (0) | 2021.01.25 |
[알고리즘][Python] 백준 2263 트리의 순회 문제 풀이 (0) | 2021.01.24 |
[알고리즘][Python] 백준 2448 별 찍기 문제 풀이 (0) | 2021.01.24 |