정처기 실기 : 2023년 3회차 기출, 1️⃣1️⃣~1️⃣5️⃣

m_ngyeong·2024년 4월 2일
0
post-thumbnail

정보처리기사 실기


📝 2023년 3회차 기출, 1️⃣1️⃣~1️⃣5️⃣

11. Java Lang. - 재귀함수, 클래스 상속

class Parent {
    it 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));
    }
}

🖍 2
1️⃣ Child클래스의 생성자를 이용하여 Parent클래스의 객체 변수 obj를 선언하고, Child클래스의 생성자를 호출한다.
[부모클래스명][객체변수명] = new [자식클래스생성자()] : 부모 클래스의 객체 변수를 선언하면서 자식 클래스이 생성자를 사용하면 형 변환이 발생한다. 이 때, 부모 클래스와 자식 클래스에 동일한 속성이나 매소드가 있으면 부모 클래스의 속성이나 매소드가 자식 클래스의 속성이나 매소드로 재정의된다.
2️⃣ obj.compute(7)에 의해 Child 클래스의 compute()함수 호출.
7을 매개변수로 넘겨주어 재귀함수로 리턴 (n - 1) + (n - 3)
3️⃣ compute(6) + compute(4)
4️⃣ (compute(5) + compute(3)) + (compute(3) + compute(1))
5️⃣ {((compute(4) + compute(2)) + (compute(2) + compute(0))} + {(compute(2) + compute(0)) + 1}
6️⃣ [{(compute(3) + compute(1))} + {(compute(1) + compute(-1))}] + {(compute(1) + compute(-1)) + 0} + {(compute(1) + compute(-1)) + 0 + 1}
7️⃣ {(compute(2) + compute(0)) + 1} + 1 + (-1) + 1 + (-1) + 1 + (-1) + 0 + 1
8️⃣ (compute(1) + compute(-1)) + 0 + 1 + 1
9️⃣ 1 + (-1) + 1 + 1
🔟 1 + 1 = 2

12.

IP 패킷에서 외부의 공인 IP주소와 포트주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은?

🖍 NAT(Network Address Transformation)

  • 한 개의 정식 IP 주소에 대량의 가상 사설 IP 주로를 할당 및 연결하는 기능
  • '네트워크 주소 변환'의 약자
  • 한 개의 IP 주소를 사용해서 외부에 접속할 수 있는 노드는 어느 시점에서 1개만으로 제한되는 문제가 있으나, 이때는 IP Masquerade(마스커레이드)를 이용하면 됨

13. Java Lang. - Static Variable

다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인을 작성하시오.

1  class Person {
2    private String name;
3    public Person(String val) {
4      name = val;
5    }
6    public static String get() {
7      return name;
8    }
9    public void print() {
10     System.out.println(name);
11   }
12 }

13 public class soojebi {
14   public static void main(String[] args) {
15     Person obj = new Person("Kim");
16     obj.print();
17   }
18 }

🖍 7

public static String get() {
    return name;
}
  • 6라인의 static 때문에 7라인에서 에러 발생.
  • 7: error: non-static variable name cannot be referenced from a static context
    (비정적 변수 이름은 정적 컨텍스트에서 참조할 수 없음.)

❗문제 설명

  • name은 인스턴스 변수인데, get() 메서드는 static 메서드
  • Java에서는 static 메서드 안에서 인스턴스 변수에 직접 접근할 수 없음
  • 왜냐하면 static 메서드는 클래스 레벨에서 실행되기 때문에, 특정 인스턴스와 관련이 없음

✅ 해결 방법

  1. get() 메서드를 static에서 인스턴스 메서드로 바꾸기:
public String get() {
    return name;
}
  • 이렇게 바꾸면 obj.get()으로 호출할 수 있음
  1. namestatic 변수로 만들기 (하지만 이건 의도에 따라 다름):
private static String name;
  • 하지만 이 경우 모든 Person 객체가 같은 name을 공유하게 되므로, 일반적으로 사람마다 다른 이름을 갖는 걸 원하면 이건 적절하지 않음

14. Python - 예약어

x, y = input("x, y의 값을 공백으로 구분하여 입력: ")._____()
print("x의 값:", int(x))
print("y의 값:", int(y))

# 실행결과
# x, y의 값을 공백으로 구분하여 입력: 5 10
# x의 값: 5
# y의 값: 10

🖍 split

  • slice : 객체명[초기위치:최종위치:증가값]
  • pop() : 리스트의 '위치'에 있는 값을 출력하고 해당 요소를 삭제함
    [10,11,12]pop(1)11
  • extend() : 기존 리스트에 인수의 요소들을 리스트의 끝에 추가하여 확장하는 메소드로, 여러 값을 한 번에 추가 가능
    ['a','b'].extend('c','d')['a','b','c','d']
  • reverse() : 리스트의 순서를 역순으로 뒤집음
    [1,2,3].reverse()[3,2,1]
  • sort() : 리스트를 정렬하며, 기본값은 오름차순
    • True: 내림차순, False: 오름차순
      [5,1,3].sort()[1,3,5]

15. 다이어그램

🖍 패키지(Package)
패키지 다이어드램은 시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하며, 유스케이스나 클래스 등의 모델 요소들의 그룹화한 패키지의 관계를 표현한다.

  • 패키지 : 요소들을 그룹으로 조직하기 위한 요소
  • 의존관계 : 하나의 패키지가 다른 패키지를 사용하는 관계
    - 의존성의 성질을 나타내기 위해 스테레오 타입을 붙일 수 있음
    - 스테레오 타입 : <<import>>, <<access>>


참고,
https://q.fran.kr/시험/정보처리기사%20실기

profile
ʚȉɞ

0개의 댓글