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