정보처리기사 실기PythonPython 트리난이도 4MCQ

정보처리기사 실기 Python 트리 기출문제 #3877

문제

다음 Python 코드의 출력 결과로 가장 적절한 것은?

Python
class Node: def __init__(self, value): self.value = value self.children = [] def tree(li): nodes = [Node(i) for i in li] for i in range(1, len(li)): nodes[(i - 1) // 2].children.append(nodes[i]) return nodes[0] def calc(node, level=0): if node is None: return 0 return (node.value if level % 2 == 1 else 0) + sum(calc(n, level + 1) for n in node.children) li = [3, 5, 8, 12, 15, 18, 21] root = tree(li) print(calc(root))

① 13 ② 3 ③ 33 ④ 26

정답

1

해설

정답: 1. calc는 홀수 레벨의 노드 값만 더한다. 루트 3은 레벨 0이라 제외되고, 레벨 1의 값 5와 8이 더해져 13이 출력된다.

오답 풀이

  • 1번: 홀수 레벨 값 5와 8의 합이다.
  • 2번: 루트 값만 계산한 값이다.
  • 3번: 일부 자식 노드까지 잘못 포함한 값이다.
  • 4번: 짝수 레벨 또는 전체 합 일부를 혼동한 값이다.

보충 개념 완전 이진트리 배열 표현에서 인덱스 i의 부모는 (i-1)//2이다. 재귀 함수의 level 값이 어떤 노드를 포함할지 결정한다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.