20251

20문제 · 2025-1

  1. #1·빈칸 채우기·난이도 보통·쪼잔함 2 (짜증)네트워크보안

    다음 네트워크 보안과 관련된 문제이다. 괄호 안에 알맞은 용어를 작성하시오.

    ( )는 다른 사용자의 세션 정보를 몰래 탈취하여 시스템에 접근하는 공격 방식이다.

  2. #2·빈칸 채우기·난이도 보통·쪼잔함 2 (짜증)데이터베이스

    다음은 제약조건과 관련된 문제이다. 괄호 안에 알맞은 용어를 [보기]에서 골라 작성하시오.

    [보기] 도메인 무결성, 개체 무결성, 참조 무결성

    • ( ① )은 속성 수준에서 적용되며, 기본키 속성에는 NULL 값을 허용하지 않는다. 이 제약조건은 속성의 개수와 동일한 수만큼 존재하며, 튜플 삽입/수정 시 제약사항을 우선 확인한다.
    • ( ② )은 튜플 단위에서 적용되며, NULL 값은 외래키에 허용된다. 튜플 삽입/수정 시 제약사항을 우선 확인한다. 또한 부모 릴레이션의 튜플이 수정/삭제될 경우에도 제약사항 확인이 필요하다.
    • ( ③ )은 속성 단위에서 정의되며, NULL 값 여부와는 기본기 여부에 따라 다르다. 릴레이션 내 제약조건 개수는 기본적으로 1개이며, 튜플 삽입/수정 시 제약사항을 우선 확인한다.
  3. #3·빈칸 채우기·난이도 어려움·쪼잔함 3 (욕 나옴)네트워크

    아래 괄호 안의 용어를 영문 약어로 작성하시오.

    • ( )는 오류 검출을 위해 사용되는 3글자의 약어로, 전송 또는 저장된 데이터에 오류가 있는지를 검사하는 방식이다.
    • ( )는 데이터에 체크섬을 추가하여 데이터를 전송하거나 저장한 후, 수신하는 읽을 때 체크섬을 다시 계산하여 데이터가 변경되었는지 확인하는 기법이다.
    • ( )는 데이터 안정성을 높이는 데 사용된다.
    • 데이터는 이진수로 표현되며, 정해진 다항식(예: x^4+x+1)을 기준으로 나눗셈하여 그 나머지 값을 검사 코드로 사용하는 방식을 ( )이라 한다.
  4. #4··난이도 보통·쪼잔함 2 (짜증)보안

    다음은 악성코드 관련된 문제이다. 설명에 해당하는 것을 [보기]에서 골라 작성하시오.

    사용자가 원하지 않는 소프트웨어를 구매하도록 유도하기 위해 사회공학 기법을 활용하여 충격, 불안, 위협 등의 감정을 자극하는 악성코드 유형이다. 주로 가짜 바이러스 경고나 시스템 오류 메시지를 통해 사용자를 속여 금전적 이득이나 특정 행동을 유도한다. '겁을 주다'라는 영어 단어에서 유래되었다.

    보기 펼치기

    ㄱ. 스케어웨어 ㄴ. 스팸웨어 ㄷ. 애드웨어 ㄹ. 안티 스파이웨어 ㅁ. 유즈웨어 ㅂ. 그룹웨어

  5. #5·코드 추적·난이도 보통·쪼잔함 2 (짜증)프로그래밍Java

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

    public class Main {
        public static void main(String[] args) {
            int a = 5, b = 0;
            try {
                System.out.print(a / b); // ①
            } catch (ArithmeticException e) { // ③
                System.out.print("출력1"); // ④
            } catch (NumberFormatException e) {
                System.out.print("출력3");
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.print("출력2");
            } finally {
                System.out.print("출력5"); // ⑤
            }
        }
    }
    
  6. #6·단답형·난이도 쉬움·쪼잔함 2 (짜증)네트워크TCP/IP

    다음 내용은 ARP/RARP에 대한 설명이다. 각 설명에 해당하는 것을 작성하시오.

    ( ① )은 네트워크상에서 IP 주소를 MAC 주소로 변환하는 프로토콜이고, ( ② )은 MAC 주소를 IP 주소로 변환하는 프로토콜이다.

    프로토콜설명
    ARPIP 주소를 MAC 주소로 변환하는 프로토콜이다.
    RARPMAC 주소를 IP 주소로 변환하는 프로토콜이다.
  7. #7·코드 추적·난이도 보통·쪼잔함 1 (그럭저럭)데이터베이스SQL

    다음은 SQL 문제이다. 아래 두 테이블을 참고하여 [보기]의 쿼리 실행 결과를 작성하시오.

    [emp 테이블]

    IDname
    1001김철수
    1002강감찬
    1008이순신

    [sal 테이블]

    IDincentives
    1002300
    1004300
    10081000
    1009500

    [보기]

    SELECT name, incentives FROM emp, sal WHERE emp.id=sal.id AND incentives>=500
    
  8. #8·빈칸 채우기·난이도 보통·쪼잔함 3 (욕 나옴)데이터베이스

    다음은 데이터베이스와 관련된 설명이다. 알맞은 용어를 [보기]에서 골라 괄호를 작성하시오.

    • 릴레이션에서 속성의 개수 : ( ① )
    • 릴레이션에서 튜플의 개수 : ( ② )
    • 한 릴레이션의 속성이 다른 릴레이션의 기본 키를 참조 할 때 참조하는 속성 : ( ③ )
    • 특정 속성에 대해 입력될 수 있는 값의 유형이나 범위를 의미하고 무결성을 보장하는 기준 : ( ④ )

    [보기] ㄱ. domain ㄴ. primary ㄷ. degree ㄹ. candidate ㅁ. cardinality ㅂ. attribute

  9. #9·단답형·난이도 어려움·쪼잔함 2 (짜증)네트워크TCP/IP

    IP 주소가 192.168.35.10, 서브넷마스크가 255.255.252.0인 PC에서 브로드캐스트로 다른 IP로 정보를 전달한다 할 때 수신할 수 있는 알맞은 IP를 [보기]에서 모두 골라 작성하시오.

    [보기] ㄱ. 192.168.34.1 ㄴ. 192.168.32.19 ㄷ. 192.168.35.20 ㄹ. 192.168.33.138

  10. #10·코드 추적·난이도 어려움·쪼잔함 3 (욕 나옴)프로그래밍C언어

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

    #include <stdio.h>
    
    char Data[5] = {'B', 'A', 'D', 'E'};
    char c;
    
    int main() {
        int i, temp, temp2;
    
        c = 'C';
        printf("%d\n", Data[3] - Data[1]);
    
        for(i = 0; i < 5; ++i) {
            if(Data[i] > c) {
                break;
            }
        }
    
        temp = Data[i];
        Data[i] = c;
        i++;
    
        for(; i < 5; ++i) {
            temp2 = Data[i];
            Data[i] = temp;
            temp = temp2;
        }
    
        for(i = 0; i < 5; i++) {
            printf("%c", Data[i]);
        }
    }
    
  11. #11·코드 추적·난이도 ·쪼잔함 4 (화병)프로그래밍C언어

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

    #include <stdio.h>
    #include <stdlib.h>
    
    void set(int** arr, int* data, int rows, int cols) {
        for (int i = 0; i < rows * cols; ++i) {
            arr[((i + 1) / rows) % rows][(i + 1) % cols] = data[i];
        }
    }
    
    int main() {
        int rows = 3, cols = 3, sum = 0;
        int data[] = {5, 2, 7, 4, 1, 8, 3, 6, 9};
    
        int** arr;
        arr = (int**) malloc(sizeof(int*) * rows);
    
        for (int i = 0; i < rows; i++) {
            arr[i] = (int*) malloc(sizeof(int) * cols);
        }
    
        set(arr, data, rows, cols);
    
        for (int i = 0; i < rows * cols; i++) {
            sum += arr[i / rows][i % cols] * (i % 2 == 0 ? 1 : -1);
        }
    
        printf("%d", sum);
    }
    
  12. #12··난이도 보통·쪼잔함 5 (현타)소프트웨어공학

    다음은 결합도와 관련된 내용입니다. [보기]에서 알맞은 답을 골라 작성하시오.

    1. 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
    2. 모듈 간의 인터페이스로 배열이나 오브젝트, 자료구조가 전달되는 경우의 결합도
    3. 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도

    [보기] ㄱ. 자료 결합도 ㄴ. 스탬프 결합도 ㄷ. 제어 결합도 ㄹ. 공통 결합도 ㅁ. 내용 결합도 ㅂ. 외부 결합도

    보기 펼치기
    1. ㅁ, 2. ㄴ, 3. ㄹ
  13. #13·코드 추적·난이도 ·쪼잔함 3 (욕 나옴)프로그래밍Java

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

    public class Main {
        public static void main(String[] args) {
            new Child();
            System.out.println(Parent.total);
        }
    }
    
    class Parent {
        static int total = 0;
        int v = 1;
    
        public Parent() {
            total += (++v);
            show();
        }
    
        public void show() {
            total += total;
        }
    }
    
    class Child extends Parent {
        int v = 10;
    
        public Child() {
            v += 2;
            total += v++;
            show();
        }
    
        @Override
        public void show() {
            total += total * 2;
        }
    }
    
  14. #14·빈칸 채우기·난이도 보통·쪼잔함 4 (화병)소프트웨어공학디자인패턴

    다음은 디자인 패턴에 대한 설명이다. 알맞은 답을 보기에서 골라 작성하시오.

    • 서로 다른 인터페이스를 가진 클래스들을 연결하여 사용 가능하게 한다.
    • 기존 클래스(Adaptee)를 원하는 인터페이스(Target)에 맞게 변환하는 어댑터(Adapter)를 만든다.
    • 기존 클래스를 감싸서(wrapper) 인터페이스를 변환해 주는 역할을 한다.

    [보기]

    • Abstract Factory, Adapter, Command, Builder, Composite, State, Factory Method, Bridge, Observer, Prototype, Facade, Template, Singleton, Flyweight, Method, Proxy, Visitor
  15. #15·코드 추적·난이도 어려움·쪼잔함 3 (욕 나옴)소프트웨어공학테스트

    문장(Statement) 커버리지 테스트를 수행하려고 한다. 코드 아래의 제어 흐름도 빈칸에 연결되도록 작성하고, 문장 커버리지 순서대로 작성하시오.

    int func(int arr[], int len, int init) {
        int i = 0;
        while (i < len && arr[i] < init) {
            if (arr[i] < 0) {
                arr[i] = -arr[i];
            }
            i++;
        }
        return i;
    }
    

    [제어 흐름도] 1: int i=0 2: while (i < len && arr[i] < init) 3: if (arr[i] < 0) 4: arr[i] = -arr[i] 5: i++ 6: return i

  16. #16·코드 추적·난이도 어려움·쪼잔함 2 (짜증)프로그래밍Java

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

    public class Main {
        public static void main(String[] args) {
            int[] data = {3, 5, 8, 12, 17};
            System.out.println(fun(data, 0, data.length - 1));
        }
    
        static int fun(int[] a, int st, int end) {
            if (st >= end) return 0;
            int mid = (st + end) / 2;
            return a[mid] + Math.max(fun(a, st, mid), fun(a, mid + 1, end));
        }
    }
    
  17. #17·코드 추적·난이도 ·쪼잔함 3 (욕 나옴)프로그래밍Python

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

    class Node:
        def __init__(self, value):
            self.value = value
            self.children = []
    
    def tree(li):
        nodes = [Node(i) for i in li]
        for i in range(1, len(li)):
            nodes[(i - 1) // 2].children.append(nodes[i])
        return nodes[0]
    
    def calc(node, level=0):
        if node is None:
            return 0
        return node.value if level % 2 == 1 else 0 + sum([calc(n, level + 1) for n in node.children])
    
    li = [3, 5, 8, 12, 15, 18, 21]
    root = tree(li)
    print(calc(root))
    
  18. #18·코드 추적·난이도 ·쪼잔함 3 (욕 나옴)프로그래밍C언어

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

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Data {
        int value;
        struct Data *next;
    } Data;
    
    Data* insert(Data* head, int value) {
        Data* new_node = (Data*)malloc(sizeof(Data));
        new_node->value = value;
        new_node->next = head;
        return new_node;
    }
    
    Data* reconnect(Data* head, int value) {
        Data *prev = NULL, *curr = head;
        while (curr != NULL && curr->value != value) {
            prev = curr;
            curr = curr->next;
        }
        if (curr == NULL || prev == NULL) return head;
        prev->next = curr->next;
        curr->next = head;
        head = curr;
        return head;
    }
    
    int main() {
        Data *head = NULL, *curr;
        for (int i = 1; i <= 5; i++)
            head = insert(head, i);
        head = reconnect(head, 3);
        for (curr = head; curr != NULL; curr = curr->next)
            printf("%d", curr->value);
        return 0;
    }
    
  19. #19·코드 추적·난이도 어려움·쪼잔함 2 (짜증)프로그래밍C언어

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

    #include <stdio.h>
    
    typedef struct {
        char* name;
        int score[3];
    } Student;
    
    int dec(int enc) {
        return enc & 0xA5;
    }
    
    int sum(Student* p) {
        return dec(p->score[0]) + dec(p->score[1]) + dec(p->score[2]);
    }
    
    int main() {
        Student s[2] = {
            {"Kim", {0xA0, 0xA5, 0xDB}},
            {"Lee", {0xA0, 0xED, 0x81}}
        };
        Student* p = s;
        int result = 0;
        for (int i = 0; i < 2; i++) {
            result += sum(&s[i]);
        }
        printf("%d", result);
        return 0;
    }
    
  20. #20·코드 추적·난이도 어려움·쪼잔함 2 (짜증)프로그래밍Java

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

    public class Main {
        public static void main(String[] args) {
            System.out.println(calc("5"));
        }
    
        static int calc(int value) {
            if (value <= 1) return value;
            return calc(value - 1) + calc(value - 2);
        }
    
        static int calc(String str) {
            int value = Integer.valueOf(str);
            if (value <= 1) return value;
            return calc(value - 1) + calc(value - 3);
        }
    }