728x90
반응형
https://www.acmicpc.net/problem/1991
Python
import sys
input = sys.stdin.readline
tree = {}
n = int(input().rstrip())
a, b, c = input().split()
tree[a] = (b, c)
root = a
for _ in range(n-1):
a, b, c = input().split()
tree[a] = (b, c)
def pre(now):
print(now, end="")
if tree[now][0] != ".":
pre(tree[now][0])
if tree[now][1] != ".":
pre(tree[now][1])
def mid(now):
if tree[now][0] != ".":
mid(tree[now][0])
print(now, end="")
if tree[now][1] != ".":
mid(tree[now][1])
def post(now):
if tree[now][0] != ".":
post(tree[now][0])
if tree[now][1] != ".":
post(tree[now][1])
print(now, end="")
pre(root)
print()
mid(root)
print()
post(root)
+) 덧붙임
시간 단축을 위해 print() 함수를 여러 번 호출하기보다는
문자열 이어붙이기 방식으로 답을 모아보았다.
하지만 10ms 더 늦어졌다.
print() 함수를 여러번 출력해도 될 때는 그렇게 하는 것이 조금 더 빠른 결과를 볼 수 있다.
import sys
input = sys.stdin.readline
tree = {}
n = int(input().rstrip())
a, b, c = input().split()
tree[a] = (b, c)
root = a
for _ in range(n-1):
a, b, c = input().split()
tree[a] = (b, c)
ans = ["", "", ""]
def pre(now):
global ans
ans[0] += now
if tree[now][0] != ".":
pre(tree[now][0])
if tree[now][1] != ".":
pre(tree[now][1])
def mid(now):
global ans
if tree[now][0] != ".":
mid(tree[now][0])
ans[1] += now
if tree[now][1] != ".":
mid(tree[now][1])
def post(now):
global ans
if tree[now][0] != ".":
post(tree[now][0])
if tree[now][1] != ".":
post(tree[now][1])
ans[2] += now
pre(root)
mid(root)
post(root)
print("\n".join(ans))
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준][Python] 1780번 종이의개수 - 재귀(분할정복) (0) | 2021.08.29 |
---|---|
[백준][Python] 1992번 쿼드트리 - 재귀(분할정복) (0) | 2021.08.29 |
[백준][Python] 2096번 내려가기 - DP (0) | 2021.08.26 |
[Python] 그래프 최단경로 알고리즘 정리 (0) | 2021.08.23 |
[백준][Python] 1916번 최소비용 구하기 - 그래프, 다익스트라 (0) | 2021.08.23 |