정보처리기사 실기JavaJava 재귀난이도 4MCQ

정보처리기사 실기 Java 재귀 기출문제 #3876

문제

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

Java
public class Main { public static void main(String[] args) { int[] data = {3, 5, 8, 12, 17}; System.out.println(func(data, 0, data.length - 1)); } static int func(int[] a, int st, int end) { if (st >= end) return 0; int mid = (st + end) / 2; return a[mid] + Math.max(func(a, st, mid), func(a, mid + 1, end)); } }

① 20 ② 17 ③ 25 ④ 8

정답

1

해설

정답: 1. 최초 호출 func(a,0,4)에서 mid는 2이므로 a[2]=8을 더한다. 왼쪽 func(a,0,2)는 8, 오른쪽 func(a,3,4)는 12를 반환하므로 8 + max(8, 12) = 20이다.

오답 풀이

  • 1번: 재귀 호출과 Math.max 결과를 올바르게 계산한 값이다.
  • 2번: 배열의 마지막 값과 혼동한 값이다.
  • 3번: 여러 값을 단순 합산한 값이다.
  • 4번: 최초 mid 값만 반환한 경우이다.

보충 개념 재귀 함수는 종료 조건과 분할 범위를 정확히 추적해야 한다. 이 코드는 중간값을 더하고 양쪽 재귀 결과 중 큰 값을 선택한다.

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

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

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

[정보처리기사 실기] Java 재귀 Java 기출 #3876 | 문어CBT