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

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

정보처리기사 실기


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

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. 디자인 패턴

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

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

🖍 ① Bridge, ② 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) : 서브넷의 길이를 가변적으로 사용하고, 한 대역을 다양한 크기로 나누는 방식

6. BlackBox Test

테스트 기법 중 다음과 같이 '평가 점수표'를 미리 정해 놓은 후 각 영역의 경계에 해당하는 입력값을 넣고, 예상되는 출력값이 나오는지 실제 값과 비교하는 명세 기반 테스트를 쓰시오.

<평가 점수표>

평가 점수성적 등급
90~100A
80~89B
70~79C
0~69D

<케이스>

테스트 케이스12345678910
입력값-10697079808990100101
예상 결과값오류DDCCBBAA오류
실게 결과값오류DDCCBBAA오류

🖍 Boundary Value Analysis(경계값 분석)
https://velog.io/@m_ngyeong/Application-Testing

7. SQL

CREATE TABLE 부서(
	부서코드 INT PRIMARY KEY,
  	부서명 VARCHAR(20)
);

CREATE TABLE 직원(
	직원코드 INT PRIMARY KEY,
    부서코드 INT,
  	직원명 VARCHAR(20),
    FOREIGN KEY(부서코드) REFERENCES 부서(부서코드) // '부서코드'속성은 <부서>테이블의 '부서코드'속성을 참조하는 외래키
  		ON DELETE CASCADE
);

INSERT INTO 부서 VALUES('10', '영업부');
INSERT INTO 부서 VALUES('20', '기획부');
INSERT INTO 부서 VALUES('30', '개발부');

INSERT INTO 직원 VALUES('1001', '10', '제니');
INSERT INTO 직원 VALUES('1002', '10', '로제');
INSERT INTO 직원 VALUES('1003', '20', '쥴리');
INSERT INTO 직원 VALUES('1004', '20', '나띠');
INSERT INTO 직원 VALUES('1005', '20', '벨');
INSERT INTO 직원 VALUES('1006', '30', '리사');
INSERT INTO 직원 VALUES('1007', '30', '지수');

SELECT DISTINCT COUNT(부서코드) FROM 직원 WHERE 부서코드 = 20;
DELETE FROM 부서 WHERE 부서코드 = 20; SELECT DISTINCT COUNT(부서코드) FROM 직원;

🖍 ① 3 ,② 4

COUNT(부서코드)
3

② 번 문제는 ON DELETE CASCADE에 의해 <부서>테이블에서 튜플이 삭제되면 관련된 모든 튜플이 함께 삭제됨. ![]

8.

( ① ) 은/는 컴퓨터 보안에 있어서, 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적인 침입 시스템

( ② ) 은/는 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어있는 대량의 데이터를 의미한다. 다른 말로, 빅데이터(Big Data)와 비슷하면서도 구조화되어 있지 않고, 더이상 사용하지 않아 ‘죽은’ 데이터를 말한다. 미래에 사용될 가능성을 고려하여 저장 공간에서 삭제되지 않고 보관되어 있으나, 이는 저장 공간의 낭비뿐만 아니라 보안 위험을 초래할 수도 있다.

🖍 ① 사회 공학(Social Engineering), ② 다크 데이터(Dark Data)

9. Python Lang. - list

a = [1,2,3,4,5]
a = list(map(lambda num : num + 100, a)
print(a)

🖍 [101, 102, 103, 104, 105]
lambda num : num + 100는 인수로 입력된 값에 100을 더하는 람다 식을 정의

10.

다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션으로, 방화벽, IDS, IPS, 웹 방화벽, VPN 등에서 발생한 로그 및 보안 이벤트를 관리함으로써 비용 및 자원을 절약할 수 있는 특징이 있다. 또한, 사전에 위협에 대응할 수 있고, 보안 솔루션 간의 상호 연동을 통해 종합적인 보안 관리 체계를 수립할 수 있다.

🖍 SIEM(Security Information & Event Management)



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

profile
ʚȉɞ

0개의 댓글