본문 바로가기
카테고리 없음

2023 정보처리기사 실기 3회 프로그래밍 문제 해설(1번, 4번)

by picker_life 2024. 3. 2.
반응형

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

 

해설

  1. main 메서드에서 A b = new B() 코드를 통해 B 클래스의 인스턴스 b를 생성합니다. 이 인스턴스는 A 타입으로 업캐스팅되어 있습니다.
  2. b.paint();가 호출되어, B 클래스에 정의된 paint() 메서드가 실행됩니다.
  3. B의 paint() 메서드에서는 먼저 super.draw();를 호출합니다. 이는 A 클래스의 draw() 메서드를 호출하는데, A 클래스에 정의된 draw() 메서드는 오버라이딩 되지 않았으므로, A의 draw()가 실행되고 "B"를 출력합니다.
  4. B의 paint() 메서드에서 System.out.print("C");가 실행되어 "C"를 출력합니다.
  5. 그 다음 B의 paint() 메서드에서 this.draw();를 호출합니다. 이는 B 클래스에 오버라이드된 draw() 메서드를 호출하므로 "D"를 출력합니다.
  6. 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 함수:

  1. 함수 정의 및 초기화:
    • int test(int n)은 정수 n을 매개변수로 받는 함수입니다.
    • int i, sum = 0;에서 변수 i는 반복문의 카운터로 사용되고, sum은 n의 약수들의 합을 저장합니다.
  2. 약수 찾기 및 합 계산:
    • for (i = 1; i <= n / 2; i++) 반복문을 사용하여 1부터 n/2까지 모든 숫자를 확인합니다. n의 약수는 n/2를 초과할 수 없기 때문에 이 범위 내에서만 약수를 찾습니다.
    • if (n % i == 0) sum += i; 이 조건문을 통해 i가 n의 약수인지 확인하고, 약수라면 sum에 i를 더합니다.
  3. 완전수 판별:
    • if (n == sum) return 1;에서 n이 그 자신을 제외한 약수들의 합(sum)과 같은지 확인합니다. 같다면 1을 반환하여 완전수임을 나타냅니다.
    • return 0;은 n이 완전수가 아닐 경우 0을 반환합니다.

main 함수:

  1. 변수 초기화:
    • int i, sum=0;에서 i는 반복문의 카운터로 사용되며, sum은 발견된 완전수들의 총합을 저장합니다.
  2. 완전수 검사 및 합계 계산:
    • for (i = 2; i <= 100; i++) 반복문을 통해 2부터 100까지의 모든 숫자에 대하여 완전수인지 검사합니다.
    • if (test(i)) sum += i;에서 test(i) 함수를 호출하여 i가 완전수인지 확인하고, 완전수라면 sum에 i를 추가합니다.
  3. 결과 출력:
    • printf("%d ", sum);는 계산된 완전수들의 합을 출력합니다.
  4. 프로그램 종료:
    • return 0;은 프로그램이 성공적으로 종료되었음을 나타냅니다.