1seul357

[SWEA] 노드의 합 본문

알고리즘/SWEA

[SWEA] 노드의 합

1seul 2021. 11. 28. 16:23
T = int(input())

for TC in range(T):
    N, M, L = map(int, input().split())
    node = [0]*(N+1)             # 노드번호 1부터 N까지 사용하기 위해 (N+1)

    for i in range(M):
        j, num = map(int, input().split())   # 리프 노드의 개수만큼 입력받기
        node[j] = num            # 리프 노드에 값 저장

    for i in range(N-M, 0, -1):  # 전체노드 - 리프노드. 뒤에서부터 탐색하면서 더하기
        if (i*2)+1 <= N:         # 왼쪽, 오른쪽 자식노드 모두 있는 경우
            node[i] = node[i*2] + node[i*2+1]
        else:                    # 맨끝 노드는 왼쪽 자식노드만 있을 수 있음 (Testcase = 2)
            node[i] = node[i*2]

    print('#{} {}'.format(TC+1, node[L]))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 미로  (0) 2021.12.02
[SWEA] 단순이진 암호코드  (0) 2021.11.28
[SWEA] 이진수  (0) 2021.11.28
[SWEA] 최장 경로  (0) 2021.11.28
[SWEA] 최소 신장 트리  (0) 2021.11.28