2023 정보처리기사 실기 3회 1번
문제
Java 코드의 올바른 출력 결과 작성
public class main{
public static void main(String[] args) {
A b = new B();
b.paint();
b.draw();
}
}
class A {
public void paint() {
System.out.print("A");
draw();
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw();
System.out.print("C");
this.draw();
}
public void draw() {
System.out.print("D");
}
}
정답 : BDCDD
해설
- main 메서드에서 A b = new B() 코드를 통해 B 클래스의 인스턴스 b를 생성합니다. 이 인스턴스는 A 타입으로 업캐스팅되어 있습니다.
- b.paint();가 호출되어, B 클래스에 정의된 paint() 메서드가 실행됩니다.
- B의 paint() 메서드에서는 먼저 super.draw();를 호출합니다. 이는 A 클래스의 draw() 메서드를 호출하는데, A 클래스에 정의된 draw() 메서드는 오버라이딩 되지 않았으므로, A의 draw()가 실행되고 "B"를 출력합니다.
- B의 paint() 메서드에서 System.out.print("C");가 실행되어 "C"를 출력합니다.
- 그 다음 B의 paint() 메서드에서 this.draw();를 호출합니다. 이는 B 클래스에 오버라이드된 draw() 메서드를 호출하므로 "D"를 출력합니다.
- main 메서드에서 b.draw();를 추가로 호출합니다. 이는 B 클래스의 인스턴스 b가 실제로 가리키는 객체의 draw() 메서드를 호출하는 것으로, B 클래스의 draw() 메서드가 실행되어 "D"를 다시 출력합니다.
2023 정보처리기사 실기 3회 4번
C언어 코드의 출력 결과 작성
include <stdio.h>
int test(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++){
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main(){
int i, sum=0;
for (i = 2; i <= 100; i++){
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
정답 : 34
해설
test 함수:
- 함수 정의 및 초기화:
- int test(int n)은 정수 n을 매개변수로 받는 함수입니다.
- int i, sum = 0;에서 변수 i는 반복문의 카운터로 사용되고, sum은 n의 약수들의 합을 저장합니다.
- 약수 찾기 및 합 계산:
- for (i = 1; i <= n / 2; i++) 반복문을 사용하여 1부터 n/2까지 모든 숫자를 확인합니다. n의 약수는 n/2를 초과할 수 없기 때문에 이 범위 내에서만 약수를 찾습니다.
- if (n % i == 0) sum += i; 이 조건문을 통해 i가 n의 약수인지 확인하고, 약수라면 sum에 i를 더합니다.
- 완전수 판별:
- if (n == sum) return 1;에서 n이 그 자신을 제외한 약수들의 합(sum)과 같은지 확인합니다. 같다면 1을 반환하여 완전수임을 나타냅니다.
- return 0;은 n이 완전수가 아닐 경우 0을 반환합니다.
main 함수:
- 변수 초기화:
- int i, sum=0;에서 i는 반복문의 카운터로 사용되며, sum은 발견된 완전수들의 총합을 저장합니다.
- 완전수 검사 및 합계 계산:
- for (i = 2; i <= 100; i++) 반복문을 통해 2부터 100까지의 모든 숫자에 대하여 완전수인지 검사합니다.
- if (test(i)) sum += i;에서 test(i) 함수를 호출하여 i가 완전수인지 확인하고, 완전수라면 sum에 i를 추가합니다.
- 결과 출력:
- printf("%d ", sum);는 계산된 완전수들의 합을 출력합니다.
- 프로그램 종료:
- return 0;은 프로그램이 성공적으로 종료되었음을 나타냅니다.