본문 바로가기

정보처리기사/실기기출

[정처기실기] 2023년 2회

https://chobopark.tistory.com/420

 

[2023년 2회] 정보처리기사 실기 복원 문제

안녕하세요. 2023년 2회 정보처리기사 실기 기출문제를 정리해보았습니다. 해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다. 정보처리기사 개편안인 2020년 시험부터 2023년 3회

chobopark.tistory.com

 


 

 

1. 다음은 C언어 코드의 문제이다. 보기의 조건에 맞도록 괄호안에 알맞은 코드를 작성하시오.

 

입력값이 54321일 경우 출력값이 43215로 출력되어야 한다.

 

int main(void) {
 
    int n[5];
    int i;
 
    for (i = 0; i < 5; i++) {
        printf("숫자를 입력해주세요 : ");
        scanf("%d", &n[i]);
    }
 
    for (i = 0; i < 5; i++) {
        printf("%d", (            ) );
    }
 
  return 0;
 
}

 

 

더보기

 

n [(i+1) % 5]


i = 0 일 때 n[1] 출력

i = 1 일 때 n[2] 출력

.....

i = 4 일 때 n[0] 출력해야함.

 

 

 

 

2. 다음은 JAVA 코드 문제이다. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 최소한의 코드를 통해 괄호안을 작성하시오.

 

아래 주어진 항목들을 갖고 괄호안의 코드를 작성

변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10

 

public class Problem{
    public static void main(String[] args){
 m = 4620;
 
 a = (              );
 b = (              );
 c = (              );
 d = (              );
 
 System.out.println(a); //천원짜리     4장 출력
 System.out.println(b); //오백원짜리  1개 출력
 System.out.println(c); //백원짜리     1개 출력
 System.out.println(d); //십원짜리     2개 출력
    }
}

 

 

더보기

 

m / 1000

( m % 1000 ) / 500      =>   620 / 500

( m % 500 ) / 100      =>   120 / 100

( m % 100) / 10      =>   20 / 10

 

 

 

 

3. 다음은 c언어의 코드이다. 보기의 조건에 맞추어 알맞은 출력값을 작성하시오.

 

입력값은 홍길동, 김철수, 박영희 순서로 주어진다.

 

#include<stdlio.h> 
#include<stdlib.h> 
char n[30];
char *test() {
    printf(입력하세요 : );
    gets(n);				// 데이터를 n에 저장하는 함수
    return n;
}
 
int main()
 
{
    char * test1;
    char * test2;
    char * test3;
 
    test1 = test();
    test2 = test();
    test3 = test();
 
    printf(%s\n,test1);
    printf(%s\n,test2);
    printf(%s,test3);
 
}

 

 

더보기

 

박영희

박영희

박영희


(배열 n은 전역변수, test1 은 주소값 변수)

test() 실행.

'홍길동' 입력

n  =   0    1    2    3    4   5    ......     29

        홍   길   동   \0  

     10번지

test1은 10번지(return값)라는 주소값을 가짐.

 ...............

test() 실행.

'박영희' 입력

n  =   0    1    2    3    4   5    ......     29

        박   영   희   \0  

     10번지

test3은 10번지(return값)라는 주소값을 가짐.

 

c언어에서는 주소값으로 문자열에 접근.

해당 주소값의 시작문자부터 문자열의 끝까지 출력. 

 

 

 

 

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

 

CREATE TABLE 학생 (
  학번 int,
  이름 varchar(20),
  학년 int,
  전공 varchar(30),
  전화번호varchar(20)
);

 

[학생]

학번 이름 학년 전공 전화번호
9830287 뉴진스 3 경영학개론 010-1234-1234

 

문자열일 경우 작은따음표(작은따음표가 아니라 다른 단어로 명시되었습니다.)

 

 

더보기

 

INSERT INTO 학생(학번, 이름, 학년, 전공, 전화번호)

VALUES( 9830287, '뉴진스', 3, '경영학개론', '010-1234-1234' )

 

 

 

 

5. 다음은 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");
}

 

 

더보기

 

BCD


sum = 250 

250 / 30  => 8

break문이 없으니, case8부터 차례대로 출력. 

 

 

 

 

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

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

 

ㄱ. 구문 커버리지  ㄴ. 경로 커버리지  ㄷ. 조건/결정 커버리지   ㄹ. 변형 조건/결정 커버리지   

ㅂ. 다중 조건 커버리지  ㅅ. 결정 커버리지  ㅇ. 조건 커버리지   

 

더보기

 

ㅇ. 조건 커버리지

 

 

 

 

7. 다음은 소스코드의 알맞은 출력을 작성하시오.

 

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

 

 

더보기

 

505 ( 2023이하의 정수 중 4의 배수의 갯수)

 

 

 


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

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

 

더보기

 

템퍼프루핑 (Tamper Proofing)


* 템퍼 프루핑 

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

 

 

 

 

9. 다음은 C언어 문제이다. 알맞은 출력값을 작성하시오. (스택 Stack_ LIFO)

 

include <stdio.h>
#define MAX_SIZE 10
 
int isWhat[MAX_SIZE];
int point= -1; 
 
void into(int num) {
    if (point >= 10) printf("Full");
    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 == 10) return 1;
    return 0;
}
 
int main(int argc, char const *argv[]){
    int e;
    into(5); into(2);
    while(!isEmpty()){
        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


* 스택에 데이터를 입력/출력하는 과정을 코드로 표현한 문제 (point는 stack의 현재 위치) *


into(5) => isWhat[0] = 5     // point = 0    * point 선행증감 *

into(2) => isWhat[1] = 2     // point = 1

 

이후 while문 실행 ( point가 -1이 될 때까지 )  ____ take() 함수의 결과를 출력

take() => point가 -1일떄만 "Empty" 출력, 리턴값은 isWhat [ point-- ];  * point 후행증감 주의 *

 

== while문 실행

take() => isWhat[1] = 2 출력     // point = 0

into(4) => isWhat[1] = 4     // point = 1

into(1) => isWhat[2] = 1     // point = 2

take() => isWhat[2] = 1 출력     // point = 1

into(3) => isWhat[2] = 3     // point = 2

take() => isWhat[2] = 3 출력     // point = 1 

take() => isWhat[1] = 4 출력     // point = 0

into(6) => isWhat[1] = 6     // point = 1

take() => isWhat[1] = 6 출력     // point = 0

take() => isWhat[0] = 5 출력     // point = -1

== while문 실행 끝 __ 이 때 point가 -1이므로 while 반복문 중단.

 

 

 

 

 

10. 데이터베이스 설계 순서에 관한 내용이다. 보기를 이용하여 괄호안에 알맞은 내용을 작성하시오. 

 

 

구현, 요구조건 분석, 개념적 설계, 물리적 설계, 논리적 설계

 

 

더보기

 

요구조건 분석 

개념적 설계

논리적 설계

물리적 설계

구현 

 

 

 

 

( * 디자인패턴 * )  

11. 다음은 디자인 패턴에 관한 문제이다. 보기에서 알맞는 답을 작성하시오.

1.

 - 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.

 - 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용한다.

2.

 - 호스트 객체의 내부 상태에 접근할 수 있는 방법을 제공하여 호스트 객체에 연산을 추가할 수 있도록 한다.

 - 이 패턴은 보통 합성 구조의 원소들과 상호 작용하는 데 사용되며, 기존 코드를 변경하지 않고 새로운 기능을 추가하는 방법이다.

 

생성패턴 구조패턴 행위패턴
Singleton Adapter Observer
Factory Method Bridge Strategy
Builder Decorator Visitor

 

 

더보기

 

1. Singleton

2. Visitor

 

 

 

 

( * 오류 제어 기법 *)

12. 다음 내용에서 설명하는 문제에 대해 보기에 알맞는 답을 골라 작성하시오.
 
 
( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다.선형블록부호 및 순회부호에 속에 속한다.
 
( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.
 
( 3 ) 은/는 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나 기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종이다.
공격자는 신뢰할 수 있는 인물로 가장한 다음 가짜 청구서의 지불을 요청하거나 다른 사기에서 사용할 중요한 데이터를 요구한다.
 
( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.
 
( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.

 

<보기>

EAC, FEC, hamming, CRC, PDS, parity, BEC

 

 

더보기

 

(1) hamming

(2) FEC (전진 오류 수정)

(3) BEC (후진 오류 수정)

(4) parity

(5) CRC


* 오류 제어 기법

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

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

=> 해밍 코드, 상승 코드 등

 

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

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

=> 패리티 검사, 순환중복검사(CRC), ARO 


* 패리티 검사 (Parity Check)

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

짝수(Even, 우수) 패리티 , 홀수(Odd, 기수) 패리티

    1001 + 0 (검사비트)          1001 + 1 (검사비트)              => 데이터의 오류 여부만 검출 가능. 어느부분인지는 X

 

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

데이터 전송 시 CRC값을 계산한 후 그 값을 추가하여 전송. 

 1001 + CRC ( XOR 연산 기반)        

=>   수신 측에서도 CRC값을 검산하여, CRC값이 다르다면 데이터에 오류 발생.

즉, 송신측과 수신측이 동일한 특정 다항식을 사용하여 오류를 검출.

 

* 해밍 코드 (Hamming Code)

데이터 전송 시 N bit의 패리티 비트를 추가하여 1bit의 오류를 정정할 수 있다.   => 오류발생여부, 발생위치 검출가능

 - 최대 2bit의 오류를 검출 할 수 있다.     => 발생위치는 검출 불가능.(정정불가능) 

 100 + 1 +  1 + 00   (3개의 패리티 비트 추가)      

 

 

 

 

 

( * HDLC *)

13. 다음은 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) 비동기균형 (ABM)

(5) 비동기응답 (ARM)


 

* HDLC (High-level Data Link Control, 고급 데이터 링크 제어)

(프레임 구성)

Flag     ||       Address      ||        Control       ||        Data       ||        Checksum      ||         Flag       ||

시작                  주소                  제어              데이터(정보)    오류검출(FCS, CRC)         끝

 

* 프레임 종류 _제어 필드의 비트에 따라 구분

 - I-Frame (Information Frame, 정보 프레임) : 사용자 데이터를 전달하고 이와 관련된 데이터를 제어하는 사용. 0

 - S-Frame (Supervisory Frame, 감독 프레임) : 제어 정보 전송 전용. 10

 - U-Frame (Unnumbered Frame, 비번호 프레임) : 시스템 관리에 사용. 11

 

* 전송 모드

 - NRM (Normal Response Mode, 정규 응답 모드)

기본 서버는 보조 서버로 데이터 전송을 시작할 수 있지만 보조 서버는 기본서버의 명령에 대한 응답으로만 데이터를 전송할 수 있는 모드.

 - ABM (Asynchronous Balanced Mode, 비동기 균형 모드)

가장 널리 사용하는 모드로, 기본 서버와 보조 서버가 서로 대등하게 균형적으로 명령과 응답하며 동작하는 모드.

 - ARM (Asynchronous Response Mode, 비동기 응답 모드)

보조 서버가 기본 서버의 허가없이 데이터 전송을 게시할 수 있는 모드.

 

 

 

 

 

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

 

대칭키 : (              )

비대칭키 : (                    )

 

<보기>

DES, RSA, AES, ECC, PKI, ARIA, SEED

 

 

더보기

 

* 대칭키(=개인키, Private) 알고리즘 : 암호화키 = 복호화키

=> DES, AES, ARIA, SEED, LFSR, RC4, 3DES

 

* 비대칭키(=공개키, Public) 알고리즘 : 암호화키 <> 복호화키

=> RSA, ECC

 

 

 

 

( * 암호화 알고리즘_ 단방향 암호화_해시(Hash)*)

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

  • ( ) 란 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것이다.
  • 키에 대한 ( ) 값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가한다.
  • ( ) 값 자체를 index로 사용하기 때문에 평군 시간복잡도가 O(1) 로 매우 빠르다
  • ( ) 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
  • ( ) 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다.

 

 

더보기

 

해시 or 해싱 or hash


 

* 단방향 해시 함수 

 - 원본 데이터를 암호화된 데이터로 변환해주는 함수.

 - 암호화된 데이터는 복호화가 불가능하므로 원래 데이터를 유추하기 어려움.

 

<단점>

 - 동일한 원본 데이터는 동일한 다이제스트(Digest)*를 갖는다.

 - 무작위 데이터들을 계속 대입하여 얻은 다이제스트를 해킹할 대상과 비교해 가며 원본 데이터를 찾을 수 있다.

 

<보완 방법>

 - 해시 함수를 여러번 수행하여 무작위 대입 공격을 무력화

 - 원본 데이터에 임의의 문자열을 덧붙이는 솔트(Salt)*를 섞은 후 해시 함수를 실행.

 

* 다이제스트 (Digest) : 해시 함수라는 수학적인 연산을 통해 생성된 암호화된 메시지.

* 솔트 (Salt) : 일종의 랜덤 문자열. 

 

 

 

 

17. 다음 보기의 SQL문에서 괄호안에 알맞는 단어를 작성하시오.

 

DROP VIEW 학생 (         )

  • 학생 테이블을 참조하는 다른 VIEW나 제약 조건까지 모두 삭제되어야 한다.

 

 

더보기

 

CASCADE

 

 

 

 

18. 다음 코드는 선택정렬 구현에 관한 문제이다.  빈칸에 알맞는 연산자를 보기에서 골라 작성하시오.

 

#include
int main() {
    int E[] = {64, 25, 12, 22, 11};
    int n = sizeof(E) / sizeof(E[0]);
    int i = 0;
    do {
        int j = i + 1;
        do {
            if (E[i] (     ) E[j]) {
                int tmp = E[i];
                E[i] = E[j];
                E[j] = tmp;
            }
            j++;
        } while (j < n);
        i++;
    } while (i < n-1);
    for(int i=0; i<=4; i++)
        printf("%d ", E[i]);
}

 

<, <=, =>, >, ==, /, %

 

 

더보기

 

>


* sizeof () 함수 => 데이터타입의 크기를 반환

sizeof(E) = > 4바이트 정수값이 5개이므로 20

sizeof(E[0]) = >  64는 정수이므로 4

n = 5

 

 

 

 

19. 다음 파이썬 코드에서 알맞는 출력값을 작성하시오.

 

a = "engineer information processing"
b = a[:3]
c = a[4:6]
d = a[28:]
e=b+c+d
print(e)

 

 

더보기

 

engneing


b = "eng"

c = "ne"

d = "ing"

e = "engneing"

 

 

 

 

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

1.

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

 

2.

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

 

 

더보기

 

1. 스텁 (Stub)

2. 드라이버 (Driver)

 

 

 


https://www.youtube.com/watch?v=uN0Y8aj2QDE

 

'정보처리기사 > 실기기출' 카테고리의 다른 글

[정처기실기] 2024년 1회  (0) 2024.07.08
[정처기실기] 2023년 3회  (0) 2024.04.18
[정처기실기] 2023년 1회  (0) 2024.04.03
[정처기실기] 2022년 3회  (0) 2024.04.01
[정처기실기] 2022년 2회 *  (0) 2024.03.24