다음 Python 프로그램의 실행 결과를 쓰시오.
class Node:
def __init__(self, value):
self.value = value
self.children = []
def build(values):
nodes = [Node(value) for value in values]
for index in range(1, len(nodes)):
nodes[(index - 1) // 2].children.append(nodes[index])
return nodes[0]
def odd_level_sum(node, level=0):
own = node.value if level % 2 == 1 else 0
return own + sum(odd_level_sum(child, level + 1)
for child in node.children)
root = build([3, 5, 8, 12, 15, 18, 21])
print(odd_level_sum(root))모범답안
13
풀이와 판단 근거
build는 입력 순서대로 노드를 만든 뒤 index 1과 2를 루트 3의 자식으로, index 3~6을 각각 5와 8의 자식으로 연결해 완전 이진 트리 모양을 만든다. odd_level_sum은 level이 홀수일 때만 현재 노드 값을 더한다.
레벨 0의 3과 레벨 2의 12·15·18·21은 제외되고 레벨 1의 5와 8만 포함되므로 합은 13이다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 13와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.