article thumbnail image
Published 2022. 9. 15. 14:24

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


아이디어

  1. 이 문제는 완전이진트리로 주어지는 것 같다.
  2. 후위 순회하며 값을 구하면 되겠다.

 


풀이

def postorder(v):
    if v <= N:
        postorder(v*2)
        postorder(v*2+1)
        if tree[v] == 0:
            tree[v] = tree[v*2] + tree[v*2+1]

for tc in range(int(input())):
    N, M, L = map(int, input().split())
    tree = [0] * 1000
    for m in range(M):
        e, n = map(int, input().split())
        tree[e] = n

    postorder(1)
    print(f'#{tc+1}', tree[L])

 


후기 및 해설

  • 예상대로 후위 순회하며 가지고 있는 값이 0인 노드에 대해 왼쪽, 오른쪽 자식들을 더해서 구하면 되었다.
  • 그런데, 트리를 줄 범위를 처음에 100으로 줬었는데, 1000으로 줬어야 했다.
  • 문제를 잘 읽고 나올 수 있는 수의 범위를 고려해야겠다.

'SWEA' 카테고리의 다른 글

SWEA 4615 재미있는 오셀로 게임 (파이썬)  (0) 2022.09.16
SWEA 5177 이진 힙 (파이썬)  (0) 2022.09.15
SWEA 1232 사칙연산 (파이썬)  (0) 2022.09.15
SWEA 5176 이진탐색 (파이썬)  (0) 2022.09.13
SWEA 5174 subtree (파이썬)  (0) 2022.09.13
복사했습니다!