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

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

정보처리기사 실기


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

1. C Lang. - 2차원 배열

#include <stdio.h>

void main() {
    int field[4][4] = {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
    int mines[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; 
 
    int w = 4, h = 4;
    for(int y=0; y<h; y++) {
        for(int x=0; x<w; x++) {  
            if(field[y][x] == 0) continue;
            for(int j=y-1; j<=y+1; j++) {
                for(int i=x-1; i<=x+1; i++) {
                    if(chkover(w,h,j,i) == 1) {
                        mines[j][i] += 1;
                    }
                }
            }
        }
    }
}

int chkover(int w, int h, int j, int i) {
  if (i >= 0 && i < w && j >= 0 && j < h) return 1;
  return 0;
}

🖍
문제의 코드는 배열 field의 요소가 0이 아닌, 즉 1인 경우, 배열 mines에서 해당 위치를 중심으로 3행 3열의 범위에 1을 더하는 프로그램이다.
• w와 h는 배열의 행과 열의 길이가 저장된 변수
• y와 x는 배열 field의 행과 열 위치를 지정해 주는 변수
• j와 i는 배열 mines에서 1을 더할 범위의 행과 열 위치를 지정해 주는 변수
chkover() 함수는 j와 i가 배열의 크리르 벗어나는지 검사하는 함수이며, 벗어났다고 판단되면 0을 반환하여 해당 위치에는 1을 더하지 않도록 함

  • continue를 만나면 그 이후의 코드를 실행하지 않고 반복문의 처음으로 이동한다.

2. 관계대수

관계대수는 관게형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다. 관계대수에서 사용되는 연산은 다음과 같다.

  • 합집합(UNION)은 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산으로, 사용되는 기호는 ( ① )이다.
  • 차집합(DIFFERENCD)은 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산으로, 사용되는 기호는 ( ② )이다.
  • 교차곱(CARTESIAN PRODUCT)은 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산으로, 사용되는 기호는 ( ③ )이다.
  • 프로젝트(PROJECT)는 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 릴레이션을 만드는 연산으로, 사용되는 기호는 ( ④ )이다.
  • 조인(JOIN)공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만다는 연산으로, 사용되는 기호는 ( ⑤ )이다.

🖍 ① ∪, ② −, ③ ×, ④ π, ⑤ ⨝

  • 항목
    합집합A ∪ B
    차집합A − B
    카티션 프로덕트A × B
    프로젝트A π B
    조인A ⨝ B

3. 디자인 패턴

① 은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별하며, 서로가 독립적으로 확장할 수 있도록 구성한 패턴이다. 기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며, 새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.

② 은/는 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변화된 상태를 전달해주는 패턴이다. 일대다의 의존성을 정의하며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다.

🖍 ① Brige, ② Observe
https://velog.io/@m_ngyeong/Design-Pattern

4. Java Lang.

public class HelloWorld {
    public static void main(String[] args) {
        int result[] = new int[5];
        int arr[] = {77,32,10,99,50};
        for(int i = 0; i < 5; i++) {
            result[i] = 1;
            for(int j = 0; j < 5; j++) {
                if(arr[i] <arr[j]) result[i]++;
            }
        }
        for(int k = 0; k < 5; k++) {
             System.out.print(result[k]);
        }
    }
}

🖍 24513

5. Subnetting(서브넷팅)

192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 3개의 Subnet으로 나누었을 때, 두 번째 네트워크의 브로드캐스트 IP주소를 10진수 방식으로 쓰시오.

🖍 192.168.1.127
1️⃣ 192.168.1.0/24 에서 /24는 Subnet Mask를 의미하며, Subnet Mask는 1개의 개수가 24개라는 것으로 이를 2진수로 표현하면 11111111 11111111 11111111 00000000 이다.
*Subnet Mask를 Subnet으로 나눌 때는 서브넷 마스크가 0인 부분을 8비트를 이용하면 됨.
2️⃣ "3개의 Subnet으로 나눈다"는 2의 n승 ≥ 3을 만족하는 n은 2이므로, 8비트 중 3일 표현하는 데 필요한 2(2의2승)비트를 제외하고 나머지 6비트를 호스트로 구성한다.
3️⃣ 네트워크 개수 = 2의2승 = 4, 호스트 개수 = 256 / 네트워크 개수 = 256 / 4 = 64
4️⃣ FLSM 방식(고정된 크기로 주소를 할당)을 이용하여, 64개의 호스트를 갖는 4개의 네트워크로 나눌수 있지만, 문제에서 '3개의 Subnet으로 구성하라'하여, 4번 네트워크는 사용되지 않는다.

5️⃣ ∴ 두 번째 네트워크의 브로드캐스트 주소는 192.168.1.127이다.

Subnetting(서브넷팅)

IP 주소 고갈문제를 해결하기 위해 원본 네트워크를 여러 개의 네트워크로 분리하는 과정이다.

  • 대표 네트워크 IP 주소일 경우, 호스트 ID는 2진수 기준으로 모두 0으로 채움
  • 브로드캐스트 IP 주소일 경우, 호스트 ID는 2진수 기준으로 모두 1으로 채움
  • Types of Subnetting :
    • FLSM(Fixed-Length Subnet Masking): 서브넷의 길이를 고정적으로 사용하고, 한 대역을 동일한 크기로 나누는 방식
    • VLSM(Variable Length Subnet Masking) : 서브넷의 길이를 가변적으로 사용하고, 한 대역을 다양한 크기로 나누는 방식


참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.
https://newbt.kr/시험/정보처리기사%20실기/2022년%203회/흙기사

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글