ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1118) N
    • 개인 프로젝트 (2)
      • Unity (2)
      • Unreal (0)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (191)
      • Unreal (69)
      • Unity (111)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (242)
      • 공통 (21)
      • 네트워크 (45)
      • OS & 하드웨어 (60)
      • 자료구조 & 알고리즘 (99)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (377)
      • C++ (168)
      • C# (97)
      • Java (11)
      • Python (36)
      • SQL (44)
      • JavaScript (9)
      • React (7)
    • 그 외 (15)
      • Math (7)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 클래스
  • 티스토리챌린지
  • 그래픽스
  • 문자열
  • python
  • 포인터
  • C++
  • 알고리즘
  • 함수
  • 파이썬
  • SQL
  • c#
  • 배열
  • Unity
  • 백준
  • string
  • 언리얼
  • 유니티
  • 오블완
  • C

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

카테고리 없음

정보처리기사/정처기 실기 복원 2025 1회 해설

2026. 4. 4. 21:41

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

답) 세션 하이재킹

 

(   )은/는 '세션을 가로채다.' 라는 의미로 다른 사람의 세션 상태를 훔치거나 도용하여 액세스하는 해킹 기법이다. 

 

TCP (   )은/는 TCP의 3-way 핸드셰이크가 완료된 후에 공격자가 시퀀스 번호 등을 조작하여 정상적인 세션을 가로채고 인증 없이 통신을 탈취하는 공격 공격이다.

 

 

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

답)

ㄱ. 도메인

ㄴ. 개체

ㄷ. 참조

보기) 개체 참조 도메인

 

 

3. 아래의 내용에서 설명 글의 괄호안의 용어를 영문 약자로 작성하시오.

답) CRC

 

(        ) 은/는 3글자의 영어 약자로 이루어진 오류 기법으로 데이터를 전송하거나 저장할 때 데이터의 오류를 감지하는 데 사용되는 오류 검출 코드이다.


(        ) 은/는 데이터에 체크섬을 추가하여 데이터를 전송하거나 저장한 후, 수신 또는 읽을 때 이 체크섬을 다시 계산하여 데이터가 변경되었는지 확인하는 기법이다.


(        ) 은/는 데이터 전송의 안정성을 높이는 데 중요한 역할을 한다.


데이터는 이진수(0과 1)로 표현되며 정해진 다항식(x³ + x + 1)을 기반으로 데이터를 2진수 나눗셈하고나머지를 (       ) 값으로 삼는다.

 

 

4. 다음은 악성코드 관련된 문제이다. 아래 내용을 확인하여 보기에 골라 작성하시오.

답) ㄹ

사용자가 원치 않는 소프트웨어를 구매하도록 조작하기 위해 사회 공학을 사용하여 충격, 불안 또는 위협에 대한 인식을 유발하는 악성 소프트웨어의 한 형태이다.

‘겁을 주다’라는 영어 단어에서 유래한 것으로 공포를 이용하여 피해자를 속여 대가를 지불 하거나 특정 행동을 유도하는 랜섬웨어이다.

가짜 바이러스 경고나 시스템 문제를 표시하여 사용자가 돈을 지불하거나 특정 소프트웨어를 설치하도록 속이는 방식으로 작동한다. 

 

보기

ㄱ. 컴포넌트 웨어  ㄴ. 유즈웨어  ㄷ. 셔블웨어  ㄹ. 스캐어 웨어  ㅁ. 안티 스파이 웨어  ㅂ. 네트웨어  ㅅ. 그룹웨어  ㅇ. 애드웨어

 

 

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

답) 출력1출력5

 

0으로 나눌 수 없으므로, ArithmeticException 블럭 실행 후 finally 실행

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(ArrayIndexOutOfBoundsException e) {
      System.out.print("출력2");
    }catch(NumberFormatException e) {
      System.out.print("출력3");
    }catch(Exception e){
      System.out.print("출력4");
    }finally{
      System.out.print("출력5");
    }
  }
}

 

 

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

답)

(1) ARP

(2) RARP

 

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

( 2 ) 은/는 MAC 주소를 IP 주소로 변환하는 프로토콜이다.

 

 

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

답)

name  |  incentives  
이순신 | 1000

 

emp 테이블에서 이순신의 id는 1008이고 sal 테이블에서 incentives가 500 이상이고 같은 id인건 1008이므로

[보기]

SELECT name, incentive FROM emp, sal WHERE emp.id = sal.id and incentives >= 500

 

 

8. 아래는 데이터베이스에 관련된 설명이다. 알맞는 용어를 보기에서 골라 괄호를 작성하시오.

답) 

(1) ㄷ
(2) ㅁ
(3) ㅅ
(4) ㄱ

 

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

 

[보기]

ㄱ. domain   ㄴ. primary   ㄷ. degree    ㄹ. candidate   ㅁ. cardinality   ㅂ. attribute   ㅅ. foreign

 

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

답) ㄱ,ㄴ,ㄷ,ㄹ,ㅁ

 

ㄱ. 192.168.34.1 
ㄴ. 192.168.32.19
ㄷ. 192.168.35.200
ㄹ. 192.168.33.138
ㅁ. 192.168.35.50

 

 

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

답)

4

BACDE

#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]);
 
 // D가 c보다 크므로 i = 2에서 멈춤 
    for(i=0;i<5;++i){
        if(Data[i]>C)
            break;
    }
 
 
 // D 자리에 C가 들어감 > B A C E \0
    temp = Data[i];
    Data[i] = C;
    i++;
 
 // 스왑
 
 // 1번)
 // temp = D, temp2 = E
 // Data[3] = D
 // temp = E
 
 // 2번)
 // temp = E, temp2 = \0
 // Data[4] = E
    for(;i<5;++i){
        temp2 = Data[i];
        Data[i] = temp;
        temp = temp2;
    }
 
    for(i=0;i<5;i++){
        printf("%c", Data[i]);
    }
}

 

 

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

답) 13

#include <iostream>

using namespace std;

void set(int** arr, int* data, int rows, int cols) {
    for (int i = 0; i < rows * cols; ++i) 
    {
        // 1번째 원소
        

        arr[((i + 1) / rows) % rows][(i + 1) % cols] = data[i];
        //printf("arr[%d][%d]\n", ((i + 1) / rows) % rows, (i + 1) % cols);

		// 0 0 1 1 1 2 2 2 3 각 % 3로 > 
		int val = (i + 1) / rows;
        //printf("%d\n", val);

        // 0 0 1 1 1 2 2 2 0
        //printf("%d\n", val % rows);

        // 1 2 0 1 2 0 1 2 0
		//printf("%d\n", (i + 1) % cols);

        // 0,1 > 0,2 > 1,0 > 1,1 > 1,2 > 2,0 > 2,1 > 2,2 > 0,0
        // arr = { 9, 5, 2 }
        //       { 7, 4, 1 }
        //       { 8, 3, 6 }
    }
}

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 < cols; i++) {
        arr[i] = (int*)malloc(sizeof(int) * cols);
    }

    set(arr, data, rows, cols);

    // 9 + (-5) + 2 + (-7) + 4 + (-1) + 8 + (-3) + 6
    for (int i = 0; i < rows * cols; i++) {
        sum += arr[i / rows][i % cols] * (i % 2 == 0 ? 1 : -1);        
    }

    for (int i = 0; i < rows; i++) {
        free(arr[i]);
    }
    free(arr);

    printf("%d", sum);
}

 

 

12. 다음은 결합도와 관련된 내용이다. 보기에 알맞는 답을 골라 작성하시오.

답)

(1) ㅁ 
(2) ㄴ 
(3) ㄹ

 

(1) 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도

(2) 모듈 간의 인터페이스로 배열이나 오브젝트, 자료구조 등이 전달되는 경우의 결합도

(3) 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도

 

 

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

답) 54

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;
 
 // total = 2 / v = 2
    public Parent() {
        total += (++v);
        // Child 클래스이므로 오버라이딩된 함수 호출 > 38 라인
        show();    
    }
 
    public void show() {
        total += total;
    }
}
 
class Child extends Parent {
    int v = 10;
 
 // 우선 실행하기에 앞서 부모 생성자 호출
    public Child() {
        v += 2; // 12
        total += v++; // total = 6 + 12 = 18 / v = 3
        show();
    }
 
    @Override
    // Parent 생성자로부터 total = 2 + 4 = 6
    // Child 생성자로부터 total = 18 + 36 = 54
    public void show() {
        total += total * 2;= 
    }
}

 

 

14. 아래는 디자인 패턴에 대한 설명이다. 알맞는 답을 보기에 골라 작성하시오. 

답) Adapter

 


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

 

 

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

답)

(1) int a = 0
(2) a < m || b[a] < x
(3) b[a] < 0
(4) b[a] = -b[a];
(5) a++;
(6) return 1;
(7) ③ → ④ → ⑤ → ② → ⑥

 

int Main(int b[], int m, int x) {
    int a = 0;
    while (a < m || b[a] < x) {
        if (b[a] < 0)
            b[a] = -b[a];
        a++;
    }
    return 1;
}

 

[흐름도]

 

 

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

답) 20

public class Main { 
    public static void main(String[] args) {
        int[] data = {3, 5, 8, 12, 17};
        System.out.println(func(data, 0, data.length - 1));
    }
 
    static int func(int[] a, int st, int end) {
        if (st >= end) return 0;
        int mid = (st + end) / 2;
        // mid = 0 v1 = 0 v2 = 0 
		// mid = 1 v1 = 3 v2 = 0 
		// mid = 3 v1 = 0 v2 = 0 
		// mid = 2 v1 = 8 v2 = 12 > 호출 스택에서 마지막으로 나오니 8 + 12 = 20
        return a[mid] + Math.max(func(a, st, mid), func(a, mid + 1, end));
    } 
}

 

 

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

답) 13

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))

/노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 5 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 8 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 5 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 0 덧셈값 0
노드값 : 8 덧셈값 0
노드값 : 0 덧셈값 13

# 노드값 합산
# 0 + 0 + 5 + 0 + 0 + 8 + 0 + 0 + 0 + 0 = 13
호출스택 이므로 마지막 0 + 13

 

 

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

#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) {
    if (head == NULL || head->value == value) return head;
    Data *prev = NULL, *curr = head;
    while (curr != NULL && curr->value != value) {
        prev = curr;
        curr = curr->next;
    }
 
    if (curr != NULL && prev != NULL) {
        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가 5에서 
    head = reconnect(head, 3);
    for (curr = head; curr != NULL; curr = curr->next)
        printf("%d", curr->value);
    return 0; 
}

 

 

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

답) 908

#include <stdio.h>
 
typedef struct student {
    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. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

답) 4

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);
  }
}

 

저작자표시 (새창열림)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바