소스 코드

def dfs(idx):
    global res

    # 길이가 4인 경우(자식이 둘인 경우)
    if len(node[idx]) == 4:

        # 왼쪽 -> 정점 -> 오른쪽 순으로 확인
        dfs(int(node[idx][2]))
        res += node[idx][1]
        dfs(int(node[idx][3]))

    # 길이가 3인 경우(자식이 하나인 경우)
    elif len(node[idx]) == 3:
        dfs(int(node[idx][2]))
        res += node[idx][1]

    # 자식이 없는 경우
    else:
        res += node[idx][1]

    return


for tc in range(1,11):
    n = int(input())

    # 정점번호는 1부터 시작이기 때문에 앞에 0추가해서 index값 통일
    node = [[0]]+[list(map(str,input().split())) for _ in range(n)]

    res = ''

    # 정점번호
    dfs(1)

    print('#{} {}'.format(tc,res))

 


해결 방법

 

1. 진행 순서는 D B E A F C G

 

2. 가장 왼쪽(D) -> 정점(B) -> 오른쪽(E) -> 정점(A) -> 가장 왼쪽(F) -> 정점(C) -> 오른쪽(G)

 

3. 이런 순서대로 노드에 적힌 알파벳 읽어내면 됨


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.