정처기 실기 : 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

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

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 soojebi {
  public static void main(String[] args) {
    Person obj = new Person("Kim");
    obj.print();
  }
}

🖍 7

  • 6라인의 static 때문에 7라인에서 에러 발생.
  • 7: error: non-static variable name cannot be referenced from a static context
    (비정적 변수 이름은 정적 컨텍스트에서 참조할 수 없음.)
  • Person 클래스의 get() 메소드는 public static 으로 선언되었고, Person 객체를 만들지 않고도 호출할 수 있는 정적 메소드이다. get() 메소드는 개인 인스턴스 변수인 name 변수에 접근하려고 한다.
    인스턴스 변수는 클래스로부터 생성된 각 객체에 고유하며, 정적 메소드는 이러한 변수에 직접 접근할 수 없다.
    *인스턴스 변수(instance variable)는 클래스에 정의된 변수
  • 해결 방법
    • name 변수를 static으로 만들기:
      모든 Person 객체가 같은 이름 값을 공유하도록 의도하는 경우 name을 static으로 선언.
    • 특정 객체의 이름 반환하기:
      get() 메소드에서 static 키워드를 제거하고 Person 인스턴스를 인수로 받게하여 특정 Person 객체에서 이 메소드를 호출.
  • 권장 사항:
    '특정 객체의 이름 반환'은 일반적으로 객체 지향 설계 원칙과 캡슐화를 더 잘 반영하기 때문에 선호되며, 각 Person 객체가 고유한 이름을 가질 수 있음.

Private 멤버 : class 외부에서 접근할 수 없는 변수

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개의 댓글