[파이썬] 백준 14725번 개미굴

작성:

백준 #14725 개미굴


# 출력: 개미굴의 시각화된 구조

# 체크할 조건
# 같은 층에 여러 방이 있는 경우 사전 순서대로 나온다.
# 하나의 로봇 개미는 끝까지 간다.

# 트리를 만든 후에 DFS로 출력한다.

# dict를 하나의 노드로 만든다.
# 각 노드 구성 > 부모노드이름 : {자식노드이름: 자식노드들dict()}
# apple: {apple: {}}, banana: {kiwi: {}}}

def trav(tree, key, dashs):
    child = tree.get(key)
    if child:
        for k in sorted(child.keys()):
            print(dashs + k)
            if child.get(k):
                trav(child, k, dashs + '--')

def solution(N):
    tree = dict()
    for _ in range(N):
        inp = list(input().split())
        k, data = int(inp[0]), inp[1:]

        if not data[0] in tree: tree[data[0]] = dict()
        temp = tree
        for i in range(1, len(data)):
            children = temp.get(data[i-1])
            if children and (data[i] in children):
                temp = children
                continue
            children[data[i]] = dict()
            temp = children
    
    for key in sorted(tree.keys()):
        print(key)
        trav(tree, key, '--')

if __name__ == '__main__':
    solution(int(input()))

댓글남기기