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

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

by picker_life 2024. 3. 4.
반응형

2023 정보처리기사 실기 3회 11번

 

문제

11. Java 코드에 대한 알맞는 출력값 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Parent {
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num-1+ compute(num-2);
    }
}
 
class Child extends Parent {
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num-1+ compute(num-3);
    }
}
 
public class main {
    public static void main(String args[]) {
        Parent obj = new Child();
        System.out.print(obj.compute(7));
    }
}
cs

 

 

정답

2

 

해설

Parent 객체가 Child 인스턴스를 참조하고 있으므로, obj.compute(7) 호출 시 Child 클래스의 compute 메소드가 실행된다.

compute(7)을 계산하는 과정은 다음과 같다.

  1. compute(7)은 compute(6) + compute(4)
  2. compute(6)은 compute(5) + compute(3)
  3. compute(5)은 compute(4) + compute(2)
  4. compute(4)은 compute(3) + compute(1)
  5. compute(3)은 compute(2) + compute(0)
  6. compute(2)은 compute(1) + compute(-1)

여기서 compute(1) = 1을 반환하고, compute(0) 은 0을 반환하며, compute(-1)은 -1을 반환한다.

이어서 계산하면  compute(2)는 0이되고, compute(3)도 0이 된다. compute(4)는 1을 반환한다.

따라서 실질적으로 1 이상의 수를 반환할 수 있는것은 compute(4) 뿐이며, compute(4)를 호출하는 횟수가 정답이된다.

 

2023 정보처리기사 실기 3회 13번

문제

13.자바 코드를 실행할 경우 에러가 발생하는데 에러가 발생하는 라인은?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Person {
    private String name;
    public Person(String val) {
        name = val;
    }
    public static String get() {
    return name;
    }
    public void print() {
        System.out.println(name);
    }
}
public class main {
    public static void main(String[] args) {
        Person obj = new Person("Kim");
        obj.print();
    }
}
 
cs

 

 

정답

7

 

해설

Java 코드에서 오류가 발생하는 주요 이유는 get() 메소드가 정적(static) 메소드로 선언되어 있지만, 정적 메소드 내에서 비정적(non-static) 필드 name을 사용하려고 시도했기 때문이다.

정적 메소드는 클래스의 인스턴스와 관련이 없으므로, 인스턴스 변수에 접근할 수 없다. name은 Person 클래스의 인스턴스 변수이므로, 정적 메소드인 get()에서 직접 사용될 수 없다.

 

 

 

2023 정보처리기사 실기 3회 14번

문제

13. 파이썬에 코드에서 괄호 안에 알맞는 답을 작성

1
2
3
4
5
print("문제14")
num1, num2 = input()._____()
print(num1,num2)
num3 = num1 + num2
print(num1 + " + "  + num2 + " = " + num3)
cs

출력화면

문제14

2 3
2 + 3 = 5

 

 

정답

split

 

해설

num1num2를 올바르게 입력받기 위해서는 split() 메소드를 사용해야 한다. split() 메소드는 문자열을 분리하여 리스트로 변환하는데, 기본적으로 공백을 기준으로 문자열을 분리한다. 따라서 사용자가 입력한 문자열에서 공백을 기준으로 두 개의 숫자를 분리하여 num1num2에 할당할 수 있다.