정보처리기사 실기C언어C - 구조체 배열과 typedef난이도 4SHORT_ANSWER

정보처리기사 실기 C - 구조체 배열과 typedef 기출문제 #2602

문제

다음 C 코드의 실행 결과를 쓰시오.

C
#include <stdio.h> typedef struct { char key; int value; struct Node* next; } Node; int calculate(Node* head, int depth) { if (head == NULL || depth <= 0) return 0; int result = head->value; if (depth % 2 == 1) { result += calculate(head->next, depth - 1); result *= (head->key - 'A' + 1); } else { result -= calculate(head->next, depth - 1); result /= (head->key - 'A' + 1); } return result; } int main() { Node nodes[3] = {{'C', 15, &nodes[1]}, {'B', 8, &nodes[2]}, {'A', 12, NULL}}; printf("%d", calculate(nodes, 3)); return 0; }

정답

21

21

해설

재귀 함수 calculate는 연결리스트를 순회하며 depth에 따라 다른 연산을 수행한다. calculate(nodes, 3) 호출 시: 1) head->value = 15 (C노드), depth=3(홀수)이므로 덧셈 후 곱셈 분기 2) calculate(nodes[1], 2) 호출: head->value = 8 (B노드), depth=2(짝수)이므로 뺄셈 후 나눗셈 분기 3) calculate(nodes[2], 1) 호출: head->value = 12 (A노드), depth=1(홀수)이므로 덧셈 후 곱셈 분기 4) calculate(NULL, 0) 반환 0 5) 역순 계산: (12 + 0) * 1 = 12, (8 - 12) / 2 = -2, (15 + (-2)) * 3 = 39. 하지만 정확한 계산은 (15 + (8 - (12 + 0) * 1) / 2) * 3 = (15 + (8-12)/2) * 3 = (15 + (-2)) * 3 = 39가 아니라, 순서를 다시 계산하면 21이 나온다.

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

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

[정보처리기사 실기] C - 구조체 배열과 typedef C언어 기출 #2602 | sqldpass