Published:
Updated:

  • Reference
  • 계속 메모리 초과가 난다면 sys.setrecursionlimit(10 ** 4)로 해보는 걸 추천


Solution

import sys

# 이것도 너무 많이 해주면 메모리 초과 발생
sys.setrecursionlimit(10 ** 4)


# 왼 -> 왼 -> 왼 -> 쭉 가다가 더 자식 노드가 없을 때 오른쪽 방문
def dfs(left, right):

    if left > right:
        return

    div = right + 1
    root = array[left]

    for cur in range(left + 1, right + 1):
        if root < array[cur]:
            div = cur
            break

    dfs(left + 1, div - 1)
    dfs(div, right)

    answer.append(root)


array = []
while True:
    try:
        array.append(int(sys.stdin.readline().rstrip()))
    except:
        break

answer = []
dfs(0, len(array) - 1)
print(*answer)

Leave a comment