관리 메뉴

피터의 개발이야기

[정처기 실기] 정보처리기능사 실기 - 2023년 2회 기출문제 본문

개발이야기/정보처리기사

[정처기 실기] 정보처리기능사 실기 - 2023년 2회 기출문제

기록하는 백앤드개발자 2024. 4. 27. 08:34
반응형

 

ㅁ 들어가며

ㅇ 기출문제를 풀어보고 공부한 내용을 노트형태로 정리하였다.

ㅇ 기출문제 참조

 - newbt - 정보처리기사 실기 2023년 2회

 - 기사퍼스트 - [정보처리기사 실기] 2023년2회 기출문제 풀이

 

 

 

1. 다음은 테이블에 데이터를 삽입하기 위한 과정이다. 보기의 조건식에 맞게 데이터 삽입을 위한 SQL문을 작성하시오.

학번 이름 학년 전공 전화번호
24102938 김은영 3 컴퓨터공학 010-1234-5678
CREATE TABLE 학생 (
  학번 int,
  이름 varchar(20),
  학년 int,
  전공 varchar(30),
  전화번호 varchar(20)
);

[조건]
문자열의 경우 작은 따음표를 사용.(' ')
더보기

INSERT INTO 학생(학번, 이름, 학년, 전공, 전화번호) values (24102938, '김은영', 3, '컴퓨터공학', '010-1234-5678');

 

 

2. 다음 조건을 참고하여, SQL문에서 괄호안에 알맞는 단어를 작성하시오.

[조건]
학생 테이블을 참조하는 다른 VIEW나 제약 조건까지 모두 삭제되어야 한다.
단, 용어의 대·소문자는 상관하지 않는다.

DROP VIEW 학생 (         )
더보기

CASCADE

 

핵심 209) DROP

CASCADE: 참조하는 다른 모든 개체를 함께 제거

RESTRICT: 다른 개첵 참조 시 취소됨

 

 

3. DB 설계 순서를 보기에서 고르시오.

<보기>
a) 논리적 설계 b) 구현 c) 물리적 설계 d) 요구사항 분석 e) 개념적 설계
더보기

 요구사항 분석 - 개념적 설계 - 논리적 설계 - 물리적 설계 - 구현

 

4. 다음 보기는 암호화 알고리즘에 대한 내용이다. 대칭키와 비대칭키에 해당하는 용어를 보기의 내용 참고하여 작성하시오.

[보기]
DES, RSA, AES, ECC, PKI, ARIA, SEED

*****************************************
- 대칭키 : (          )
- 비대칭키 : (          )
더보기

대칭키 : DES, AES, PKI, ARIA, SEED

비대칭키 :  RSA, ECC

 

# 핵심 364) 양방향 알고리즘 종류

 

※ 암호 방식의 분류
• 대칭키 (비밀키)
 - Stream - LFSR, RC4
 - Block MY - DES, AES, IDEA
• 비대칭키 (공개키)
 - 인수분해 이용 - RSA, Robin
 - 이산대수- Elgamal, DSA
 - 타원곡선- ECC

 

 

5.  다음 설명에 대한 알맞는 답을 작성하시오.

[1]
- 하향식 테스트 시 상위 모듈은 존재하나 하위 모듈이 없는 경우의 테스트를 위해 임시 제공되는 모듈이다.
- 특별한 목적의 소프트웨어를 구현하는 것으로 컴포넌트를 개발하거나 테스트할 때 사용된다.
- 서버-클라이언트 구조에서 서버만 구현된 상태로 테스트를 해보고 싶을때 단순히 값만 넘겨주는 가상의 클라이언트를 만들어서 테스트 할 수 있다.

[2]
- 상향식 테스트 시 상위 모듈 없이 하위 모듈이 존재할 때 하위 모듈 구동 시 자료 입출력을 제어하기 위한 제어 모듈(소프트웨어)이다.
- 서버-클라이언트 구조에서 클라이언트만 구현된 상태로 테스트를 해보고 싶을때 접속 인증 등의 간단한 기능만 하는 가상의 서버를 만들어서 테스트 할 수 있다.
더보기

1: 스텁 2: 드라이버

 

# 핵심 139) 테스트 드라이버와 테스트 스텁의 차이점

 

 

6. 다음 소스코드의 알맞은 출력 결과를 작성하시오.

#include <stdio.h>
int main(){
  int c = 0;
  for (int i = 1; i <=2023; i++) {
    if(i%4 == 0) c++;
  }
  
  printf("%d", c);
}

 

 

7. 다음 Python 코드에 알맞는 출력값을 작성하시오.

a = "engineer information programming"
b = a[:3]  #eng
c = a[4:6] #ne
d = a[29:] #ng
e=b+c+d    #engneng
print(e)

 

 

8. 다음은 테스트 커버리지에 대한 내용이다. 내용을 보고 보기에 알맞는 '기호' 를 고르시오.

- 프로그램 내에 있는 결정포인트 내의 모든 각 개별 조건식에 대한 모든 가능한 결과 (참/거짓)에 대해 적어도 한번 수행한다.
- 소프트웨어 테스트 수행 시 소스코드를 어느 수준까지 수행하였는가를 나타내는 기준을 나타낸다.
- 실제 업무에서는 다양한 툴을 사용하여 테스팅 수행한다.
- True/False에 충분한 영향을 줄 수 없는 경우가 발생 가능한 한계점을 지닌다.
***************************************************************************************
[보기]
ㄱ. 구문 커버리지  
ㄴ. 경로 커버리지  
ㄷ. 조건/결정 커버리지   
ㄹ. 변형 조건/결정 커버리지  
ㅂ. 다중 조건 커버리지  
ㅅ. 결정 커버리지  
ㅇ. 조건 커버리지

 

 

 

# 동영상 해설 정리

ㅇ 테스트 커버리지: 작성한 테스트 케이스로 코드를 얼마나 커머할 수 있을 지를 가늠.

 

ㅇ종류

- 구문 커버리지 : 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계

- 다중 조건 커버리지 : 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논리적인 조합을 고려하여 100% 커버리지 보장

- 변형 조건/결정 커버리지 : 조건과 결정을 복합적으로 고려한 측정 방법이며, 결정 포인트 내의 다른 개별적인 조건식 결과에 상관없이 독립적으로 전체 조건식의 결과에 영향을 주는 테스트 커버리지

- 결정 커버리지 : 결정 포인트 내의 모든 분기문(조건문)이 적어도 한 번 이상 수행되도록 테스트 케이스설계

- 조건/결정 커버리지 : 모든 조건문과 각 개별 조건식이 적어도 한 번 이상 수행되도록 테스트 케이스 설계

- 경로 커버리지 : 모든 논리적인 경로가 한 번 이상 수행되도록 테스트 케이스설계

- 조건 커버리지 : if문 true false 한번씩. 결정 포인트 내의 모든 개별 조건식이 적어도 한 번 이상 수행되도록 테스트 케이스 설계

 

 

9. 다음은 자바 프로그래밍에 대한 문제이다. 알맞은 출력값을 작성하시오. 단, 프로그래밍 언어 특성에 따른 대·소문자를 반드시 구별해서 작성하시오.

public class Main{
    public static void main(String[] args) {
      String str1 = 'Programming';
      String str2 = 'Programming';
      String str3 = new String('Programming');
      printIn(str1==str2)
      println(str1==str3)
      println(str1.equals(str3))
      print(str2.equals(str3))
    }
}
더보기

true

false

true

true

 

 

# 비교연산 방식

==  : 참조 주소 비교

equals(): 값 비교

 

# 문자열 선언 방식

1. 리터럴(Literal) 대입 방식

String str1 = "Programming";

 - String Constant Pool에 값이 저장된다.

String str2 = "Programming";

 - String Constant Pool에 동일한 값이 미리 저장되어 있다면 그 주소 값을 함께 참조한다.

리터럴 방식은 메모리를 효율적으로 사용할 수 있다. 

 

2. new 연산자로 객체 생성 후 문자열 대입 방식

String str3 = new String("Programming");

객체를 생성할 때마다 메모리를 할당.

 

 

10. C 언어의 빈칸을 보기에서 골라 채우시오.

#include <stdio.h>
int main() {
  int n[5] = {5, 4, 3, 2, 1};
  for(int i=0; i<5; i++) {
    printf("%d". ( A ));
  }
}
[실행결과]
432 1 5
<보기>
0123456789
in
+ - */%=^&1!<>()[1
더보기

n[(i+1)%5]

 

11. 다음은 C언어의 문제이다. 알맞은 출력값을 작성하시오.

int n[3] = [73, 95, 82]
sum = 0
for (i=0;i<3;i++){
  sum += n[i];
}
switch(sum/30){
  case 10:
  case 9: printf("A"); 
  case 8: printf("B");
  case 7:
  case 6: printf("C"); 
  default: printf("D");
}

 

 

12. C언어의 출력결과를 쓰시오.

#include <stdio.h> 
#define MAX SIZE 10
int isWhat [MAX_SIZE];
int point= -1;

void into(int num) {
	if (point ›= 10) printf ("Full \n");
	isWhat[++point] = num;
}

int take() {
	if (isEmpty() == 1) printf("Empty");
	return iswhat[point--];
}

int isEmpty() {
	if (point == -1) return 1;
	return 0;
}

int isFull() {
	if (point == 9) return 1;
	return 0;
}

int main(){
    into(5); 
    into(2);
    printf("%d", take());
    into(4); 
    into(1); 
    printf ("%d", take()); 
    into(3); 
    printf("%d", take()); 
    printf("%d", take());
    into(6); 
    printf("%d", take()); 
    printf("%d", take());
    
    return 0;
}

 

더보기

213465

 

# 스택

리스트의 한쪽으로만 삽입과 삭제(출력)가 이루어지는 후입선출(LIFO)형식의 자료구조

 

 

13. C언어: 출력결과를 쓰시오.

#include <stdio.h>
char n[30];

char* getname(){
  printf("입력:");
  gets(n);
  return n;
}
int main() {
  char* n1 = getname();
  char* n2 = getname();
  char* n3 = getname();
  printf("%s \n", n1);
  printf("%s \n", n2);
  printf("%s ", n3);
  return 0;
}
<입력>
홍길동
김철수
박영희
더보기

박영희

박영희

박영희

 

# gets(n): 키보드의 입력을 받아 전역변수 n에 저장한다.

전역변수를 gets에서 재사용하면서 입력값이 갱신되어 마지막 입력값만 남아있다.

 

 

14. C언어 빈 칸을 채우시오.

#include <stdio.h>
int main() {
  int m = 4620;
  int a, b, c, d;
  a = (ㄱ);
  b = (ㄴ);
  c = (ㄷ);
  d = (ㄹ);
  printf(“1000원 개수:%d\n", a):
  printf("500원 개수:%d\n", b)
  printf("100원 개수:%d\n”, c);
  printf(“10원 개수:%d", d);
}
[보기]
아래 주어진 항목들을 응용하여 괄호 안 코드를 작성.
변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10
더보기

ㄱ: m/1000

ㄴ:(m%1000)/500

ㄷ:(m%500)/100

ㄹ:(m%100)/10

 

15. C언어: 빈 칸을 채우시오.

#include <stdio.h>
int main() {
	int E[] = (64, 25, 12, 22, 11};
	int n = sizeof(E) / sizeof(E[0]);
    int i = 0;
    do {
	    int i = i + 1;
    	do {
		    if (E[i] (   ㄱ   ) E[j]) {
			    int tmp = E[i];
			    E[i] = E[j];
			    E[j] = tmp;
		    } 
        	j++;
	    } while (¡ < n);
    	i++;
	} while (i < n-1);
    for(int i=0; i<=4; i++)
  	  printf("%d ", E[i]);
}
<실행결과>
 11 12 22 25 64
더보기

ㄱ: >

 

16. 다음 괄호 안에 알맞는 답을 작성하시오.

단방향 암호화(One-way Encryption)는 평 문을 암호문으로 바꾸는 암호화는 가능하지만, 암호문을 평문으로 바꾸는 복호화는 불가능하기 때문에 단방향 암호화라고 한다. 단방향 암호화에서는 ( )(을)를 이용한 암호화 방식을 사용한다. ( )란 임의의 길이의 임의의 길이의 입력 데이터를 받아 고정된 길이의 값으로 변환하는 방식이다. 이 방식을 사용하는 대표적인 ( ) 알고리즘으로는 HAVAL, SHA-1 등이 있다.
더보기

해시

 

# 핵심 365) 해시(Hash)

해시는 임의의 길이의 입력 데이터나 메시지를 고정된 길 이의 값이나 키로 변환하는 것을 의미한다.

- 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부른다.

- 데이터의 암호화, 무결성 검증을 위해 사용될 뿐만 아 니라 정보보호의 다양한 분야에서 활용된다.

- 해시 함수의 종류에는 SHA 시리즈, MD5, N-NASH, SNEFRU 등이 있다.

 

# 핵심 366 솔트(Salt)

- 해시 알고리즘은 수학적 암호화기 때문에 암호화 결과가 동일하다.

- 솔트(Salt)를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나게 되어 더 안전 하게 암호화된 데이터를 관리할 수 있게 된다.

 

 

17. 다음 내용에 해당하는 알맞는 답을 작성하시오.

- 소프트웨어에서 워터마크 삭제 등과 같이 소프트웨어가 불법으로 변경(unauthorized modifications)되었을 경우, 그 소프트웨어가 정상 수행되지 않게 하는 기법이다.
- 소프트웨어 변조 공격을 방어하기 위해 프로그램에 변조검증코드(tamper-proofing code)를 삽입하는 것도 한 방법으로, 변조검증코드의 용도는 첫째 프로그램이 변경되었는지를 탐지하는 것이고, 둘째는 변조가 탐지되었다면 프로그램이 실행되지 않게 한다.
- 소프트웨어의 위변조 방지 역공학 기술의 일종으로 디지털 콘텐츠의 관련 산업이나 전자상거래 또는 보호해야 할 소프트웨어가 있는 다양한 산업 분야에 적용된다.

 

ㅇ 템퍼 프루핑(Tamper Proofing)
 Tampering(부정 조작) 검출 시스템을 통하여 소프트웨어에 적용된 위•변조를 감지하고 프로그램이 오작동 하도
록 만드는 기술

 

 

18. 다음은 디자인 패턴에 관한 문제이다. 보기를 참고하여 알맞는 답을 작성하시오.

[1]
- 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
- 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용한다.
[2]
- 호스트 객체의 내부 상태에 접근할 수 있는 방법을 제공하여 호스트 객체에 연산을 추가할 수 있도록 한다.
- 이 패턴은 보통 합성 구조의 원소들과 상호 작용하는 데 사용되며, 기존 코드를 변경하지 않고 새로운 기능을 추가하는 방법이다.
<보기>
ㅁ 생성 패턴
Abstract Factory
Builder
Factory Method
Prototype
Singleton

ㅁ 구조 패턴
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

ㅁ 행위 패턴
Chain of Responsibility
Command
Interpreter
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
더보기

1: Singleton

2: Visitor

 

 

19. 다음은 HDLC 프로토콜에 대한 설명이다. 보기 안에 알맞는 '기호' 를 골라 작성하시오.

[보기]
ㄱ. 연결제어     ㄴ. 감독     ㄷ. 정보     ㄹ. 양방향 응답     ㅁ. 익명     ㅂ. 비번호
ㅅ. 릴레이    ㅇ. 동기균형     ㅈ. 동기응답    ㅊ. 비동기균형     ㅋ. 비동기응답
***************************************************************************************

( 1 ) 프레임은 Seq, Next, P/F의 필드를 가진다. 또한 맨 처음 비트를 0으로 가진다. Seq는 송신용 순서번호를 가지고 있다. Next는 응답용 순서번호를 가진다. P/F는 P가 1로 설정된 경우 주국에서 종국에 데이터 전송을 허용하는 것을 의미하고 F가 1로 설정된 경우 종국에서 주국으로 데이터 전송을 하는 것을 의미한다.
( 2 ) 프레임은 맨 앞의 필드가 1로 되어 있어 정보 프레임이 아니라는 것을 나타내고 다음 비트가 0이 나와있다. Type의 경우에는 2비트를 가지고 있어 4가지의 종류로 나누어진다.  데이터를 보내는 역할이 아니라 응답의 기능을 수행하므로 Seq에 대한 값은 필요가 없고 다음 프레임을 요구하는 Next만 존재한다.
( 3 ) 프레임은 순서 번호가 없는 프레임을 의미한다. 첫 번째 비트와 두 번째 비트가 모두 1로 설정되어 있다. 여러 종류를 가지고 있는데 Type의 2비트와 Modifier의 3비트를 합쳐 5비트를 통해 종류를 나눈다.
( 4 ) 은/는 두 호스트 모두 혼합국으로 동작한다. 양쪽에서 명령과 응답을 전송할 수 있다.
( 5 ) 은/는 불균형 모드로 주국의 허락 없이 종국에서 데이터를 전송할 수 있다.
더보기

1. 정보  2. 감독  3. 비번호 4. 비동기균형  5.비동기응답

HDLC 프로토콜( High-Level Data Link Control ) 설명 블로그

 

 

20. 다음 내용에서 설명하는 문제에 대해 보기에 알맞는 답을 골라 작성하시오.

[보기]EAC, FEC, hamming, CRC, PDS, parity,BEC
***************************************************************************************
( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다.선형블록부호 및 순회부호에 속에 속한다.

( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.

( 3 ) 은/는 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나 기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종이다공격자는 신뢰할 수 있는 인물로 가장한 다음 가짜 청구서의 지불을 요청하거나 다른 사기에서 사용할 중요한 데이터를 요구한다.

( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.
( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.
더보기

1. hamming
2. FEC
3. BEC
4. parity
5. CRC

 

ㅇ 오류 제어 기법

 1. 전진 오류 수정(FEC: Forward Error Correction, 순방향 오류 수정)

  - 수신 측에서 오류를 스스로 검출 및 복원할 수 있는 방식

  - 종류 : 해밍 코드, 상승 코드 등

 

2. 후진 오류 수정(BEC: Backward Error Correction, 역 방향 오류 수정)

  - 전송된 데이터에 오류가 발생된 경우, 송신 측에 오류 사실을 알려 재 전송을 요구하는 방식

  - 종류 : 패리티 검사. 순환중복검사(CRC), ARQ 등

 

ㅇ 패리티 검사(Partiy Check)

- 데이터 전송 시 오류 검출을 위해 1 bit의 패리티 비트(= 검사비트)를 추가하여 전송한

- 종류 : 짝수(Even, 우수) 패리티, 홀수(Odd, 기수) 패리티

        패리티 비트              패리티 비트

10010                     10011

 

ㅇ CRC(Cyclic Redundancy Check, 순환 중복검사)

- 데이터 전송 시 CRC 값을 XOR 연산기반으로 계산 한 후 그 값을 추가하여 전송한다.

1001CRC

 

ㅇ 해밍 코드(Hamming Code)

- 데이터 전송 시 N bit의 패리티 비트를 추가하여 1 bit의 오류를 정정할 수 있다.

- 최대 2 bit 오류를 검출할 수 있다.

       패리티비트

1001100

반응형
Comments