모두CBT

25-1아래 Python 프로그램을 실행했을 때 출력값을 적으시오.cl… | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지

5

25-1

아래 Python 프로그램을 실행했을 때 출력값을 적으시오.

class Cell:
    def __init__(self, key):
        self.key = key
        self.kids = []

def build(vals):
    cells = [Cell(x) for x in vals]
    for idx in range(1, len(cells)):
        cells[(idx - 1) // 2].kids.append(cells[idx])
    return cells[0]

def walk(node, depth=0):
    own = node.key if depth % 2 == 0 else -node.key
    return own + sum(walk(k, depth + 1) for k in node.kids)

root = build([4, 7, 1, 6, 2, 9, 3, 5])
print(walk(root))
해설

11


[해설]

build는 리스트 인덱스 idx의 부모를 (idx−1)//2로 정해 완전이진트리를 만든다.

  • 깊이 0: 4
  • 깊이 1: 7, 1
  • 깊이 2: 6, 2, 9, 3
  • 깊이 3: 5 (인덱스 7의 부모는 인덱스 3의 노드 6)

walk는 깊이가 짝수면 값을 더하고 홀수면 뺀 뒤 자식 결과를 모두 합친다.

4 − (7+1) + (6+2+9+3) − 5 = 4 − 8 + 20 − 5 = 11이다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.