정보처리기사 실기JavaJava 오버로딩난이도 4MCQ

정보처리기사 실기 Java 오버로딩 기출문제 #3880

문제

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

Java
public class Main { public static void main(String[] args) { System.out.println(calc("5")); } static int calc(int value) { if (value <= 1) return value; return calc(value - 1) + calc(value - 2); } static int calc(String str) { int value = Integer.valueOf(str); if (value <= 1) return value; return calc(value - 1) + calc(value - 3); } }

① 4 ② 5 ③ 7 ④ 8

정답

1

해설

정답: 1. main에서는 문자열 인자를 전달하므로 calc(String)이 먼저 호출된다. calc("5")는 calc(4) + calc(2)를 계산하고, int 버전의 재귀 결과는 각각 3과 1이므로 합은 4이다.

오답 풀이

  • 1번: 오버로딩 선택과 재귀 계산을 올바르게 반영했다.
  • 2번: 일반 피보나치 F(5)와 혼동한 값이다.
  • 3번: calc(5) int 버전 결과와 혼동한 값이다.
  • 4번: 재귀 호출 범위를 과대 계산한 값이다.

보충 개념 Java 오버로딩은 컴파일 시점의 인자 타입에 따라 호출 메서드가 결정된다. 문자열 "5"는 calc(String)을 호출하고, 그 내부의 정수 연산 결과는 calc(int)를 호출한다.

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

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

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

[정보처리기사 실기] Java 오버로딩 Java 기출 #3880 | 문어CBT