카테고리 없음

2024년 2회 정보처리기사 실기 복원 문제

blogger847 2025. 4. 5. 17:15

안녕하세요. 2024년 2회 정보처리기사 실기 기출문제를 정리해보았습니다.
나름대로 공부를 하면서 이해하기 쉽게 해설을 달아 놓았습니다.

해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.

 

문제 1. [Java] 코드 출력값 문제 (객체 비교)

다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오


class Main {
    public static void main(String[] args) {
        int[] a = new int[]{1, 2, 3, 4};
        int[] b = new int[]{1, 2, 3, 4};
        int[] c = new int[]{1, 2, 3};

        check(a, b);
        check(a, c);
        check(b, c);
    }

    public static void check(int[] a, int[] b) {
        if(a==b) { 
            System.out.print("O");
        } else {
            System.out.print("N");
        }
    }
}
    

문제 2. [용어] 데이터베이스 반정규화

다음 문제에서 설명하는 용어를 작성하시오

데이터를 중복시켜 성능을 향상시키기 위한 기법으로 데이터를 중복 저장하거나 테이블을 합치는 등으로 성능을 향상시키지만 데이터 무결성이 저하될 수 있는 기법


문제 3. [SQL] INSERT/SELECT/UPDATE 구문

다음은 SQL에 관한 문제이다. 아래 SQL 구문의 빈칸을 작성하시오

테이블 정의
사원[사원번호(PK), 이름, 나이, 부서]
부서[부서번호(PK), 부서명, 위치] (주어진 문제의 부서 테이블 정의가 불명확하여 일반적인 형태로 수정함)


INSERT INTO 사원 ( 사원번호, 이름, 나이, 부서) [ 1 ] (32431, ‘정실기’, 23, ‘영업’);
    

INSERT INTO 부서 ( 사원번호, 이름, 나이, 부서) [ 2 ] 사원번호, 이름, 나이, 23 FROM 사원 WHERE 이름 = ‘정실기’;
    

SELECT * [ 3 ] 사원;
    

UPDATE 사원 [ 4 ] 부서 = ‘퇴사’ WHERE 사원번호 = 32431;
    

문제 4. [DB] 릴레이션 Cardinality/Degree

다음 릴레이션의 Cardinality 와 Degree를 작성하시오.

이름 나이 A B
23 1 5
25 2 3
42 3 8
20 2 9
25 1 2

문제 5. [네트워크] 프로토콜 용어 (IPSec)

다음은 프로토콜에 대한 내용이다. 아래 내용을 읽고 알맞는 답을 작성하시오.

  • Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.
  • 기업에서 사설 인터넷망으로 사용할 수 있는 VPN(Virtual Private Network)을 구현하는데 사용되는 프로토콜이다.
  • AH(Authentication Header)와 ESP(Encapsulating Security Payload)라는 두 가지 보안 프로토콜을 사용한다.

문제 6. [Python] 코드 출력값 문제 (문자열 검색)

다음은 Python에 대한 문제이다. 아래 코드를 읽고 알맞는 출력 값을 작성하시오.


def fnCalculation(x, y):
    result = 0; 
    for i in range(len(x)):
        temp = x[i:i+len(y)]
        if temp == y:
            result += 1;
        return result

a = "abdcabcabca"
p1 = "ab";
p2 = "ca";

out = f"ab{fnCalculation(a,p1)}ca{fnCalculation(a,p2)}"
print(out)
    

문제 7. [암호화] 알고리즘 용어 (AES)

아래 설명하는 내용을 확인하여 알맞는 알고리즘을 작성하시오.

  • 대칭키 알고리즘으로 1997년 NIST(미국 국립 기술 표준원)에서 DES를 대체하기 위해 생성되었다.
  • 128비트, 192비트 또는 256비트의 가변 키 크기와 128비트의 고정 블록 크기를 사용한다.
  • 높은 안전성과 효율성, 속도 등으로 인해 DES 대신 전 세계적으로 많이 사용되고 있다.

문제 8. [네트워크] 패킷 교환 방식

패킷 교환 방식 중에 연결형과 비연결형에 해당하는 방식을 작성하시오

  1. 연결형 교환 방식
  2. 비연결형 교환 방식

문제 9. [SW설계] 모듈 결합도

아래 내용을 확인하고 보기에서 알맞는 답을 고르시오.

실행 순서가 밀접한 관계를 갖는 기능을 모아 모듈로 구성한다.
한 모듈 내부의 한 기능 요소에 의한 출력 자료가 다음 기능 원소의 입력 자료로서 제공되는 형태이다.

보기
ㄱ. 기능적(functional) ㄴ. 우연적(Coincidental) ㄷ. 통신적(Communication)
ㄹ. 절차적(Procedural) ㅁ. 시간적(Temporal) ㅂ. 순차적(sequential)
ㅅ. 논리적(Logical)


문제 10. [SW설계] 디자인 패턴 (Iterator)

아래는 디자인 패턴에 관한 설명이다. 아래 설명을 읽고 보기에서 알맞는 용어를 작성하시오.

컬렉션 객체(리스트, 배열 등)의 내부 구조를 노출하지 않고 요소들에 순차적으로 접근할 수 있게 하는 패턴이다.
이 패턴은 객체의 내부 표현 방식(예: 배열 기반 리스트, 연결 리스트)에 독립적으로 요소에 접근할 수 있도록 해준다.
반복 프로세스(순회)를 별도의 객체(Iterator 객체)에 캡슐화하여 클라이언트 코드가 컬렉션의 구체적인 구현에 종속되지 않도록 한다.

보기

생성 패턴 구조 패턴 행위 패턴
Singleton Adapter Iterator
Factory Method Bridge Visitor
Abstract Factory Composite Observer

문제 11. [네트워크] RIP 최단 경로

아래 그림을 바탕으로 RIP을 구성하여 최단 경로 비용을 계산하여 흐름에 맞게 작성하시오.

 

 


문제 12. [운영체제] SRT 스케줄링 평균 대기시간

아래의 표를 확인하여 SRT(Shortest Remaining Time) 스케줄링의 평균 대기시간을 계산하여 작성하시오.

프로세스 도착 시간 서비스 시간 (총 실행 시간)
A 0 8
B 1 4
C 2 9
D 3 5

문제 13. [C] 코드 출력값 문제 (포인터 배열)

다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


#include <stdio.h>

int main() {
    int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int* parr[2] = {arr[1], arr[2]};

    printf("%d", parr[1][1] + *(parr[1]+2) + **parr);

    return 0;
}
    

문제 14. [Java] 코드 출력값 문제 (인터페이스 구현)

다음은 Java 언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


class Main {
    public static void main(String[] args) {
        int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        ODDNumber OE = new ODDNumber();
        System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
    }
}

interface Number {
    int sum(int[] a, boolean odd);
}

class ODDNumber implements Number {
    public int sum(int[] a, boolean odd) {
        int result = 0;
        for(int i = 0; i < a.length; i++) {
            if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
                result += a[i];
        }
        return result;
    }
}
    

문제 15. [C] 코드 출력값 문제 (문자열 처리)

다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


#include <stdio.h>
#include <string.h>

void sumFn(char* d, const char* s) {
    while (*s) { 
        *d = *s; 
        d++;     
        s++;     
    }
    *d = '\0'; 
}

int main() {
    const char* str1 = "first";
    char str2[50] = "teststring";
    int result = 0;

    sumFn(str2, str1);

    for (int i = 0; str2[i] != '\0'; i++) {
        result += i;
    }
    printf("%d", result);

    return 0;
}
    

문제 16. [SW설계] 모듈 결합도 용어 (제어 결합도)

아래는 소프트웨어 설계에 대한 내용이다. 내용을 읽고 괄호안에 알맞는 답을 작성하시오.

어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해, 제어 신호(플래그, 스위치 등)를 전달하거나 다른 모듈의 제어 요소를 사용하는 결합도이다.
한 모듈이 다른 모듈에게 무엇을 해야 하는지 지시하는 경우나, 전달된 값에 따라 다른 모듈의 처리 절차가 달라지는 경우 발생한다.

(      ) Coupling


문제 17. [Java] 코드 출력값 문제 (재귀, 문자열 중복 제거)

다음은 Java에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


class Main{
    public static void main(String[] args) {
        String str = "abacadcd";
        boolean[] seen = new boolean[256];
        System.out.print(calculFn(str, str.length()-1, seen));
    }

     public static String calculFn(String str, int index, boolean[] seen) {
        if(index < 0) return "";
       char c = str.charAt(index);
        String result = calculFn(str, index-1, seen);
        if(!seen[c]) {
            seen[c] = true;
            return c + result;
        }
       return result;
    }
}
    

문제 18. [C] 코드 출력값 문제 (switch, fall-through, 변수 범위)

다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


#include <stdio.h>

void swap(int a, int b) {
    int t = a;
    a = b;
    b = t;
}

int main() {
    int a = 11;
    int b = 19;

    swap(a, b);

    switch(a) {
        case 1:
            b += 1;
        case 11: 
            b += 2;
        default:
            b += 3;
        break;
    }

    printf("%d", a-b);

    return 0;
}
    

문제 19. [C] 코드 출력값 문제 (구조체 포인터)

다음은 C언어의 구조체에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


#include <stdio.h>

struct node {
    int n1;
    struct node *n2;
};

int main() {
    struct node a = {10, NULL};
    struct node b = {20, NULL};
    struct node c = {30, NULL};

    struct node *head = &a;
    a.n2 = &b;
    b.n2 = &c;

    printf("%d\n", head->n2->n1);

    return 0;
}
    

문제 20. [Java] 코드 출력값 문제 (String split)

다음은 Java에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.


class Main {
    public static void main(String[] args) {
        String str = "ITISTESTSTRING";
        String[] result = str.split("T");
        System.out.print(result[3]);
    }
}