2022년-정보처리기사실기-3회차
정보처리기사 실기 기출문제

2022년 정보처리기사실기 3회차

총 20문항 · 주관식 · A4 약 1장

1 / 1
A4정답 포함
정보처리기사 실기 기출문제모두CBT · moducbt.com

2022년 정보처리기사실기 3회차

총 20문항 · 주관식 · 정답·해설 포함
문제 1

22-3

[학생] 테이블에 건축과 30명, 기계과 70명, 화학과 40명의 튜플이 저장되어 있다(학과 속성명은 학과). 다음 SQL 문 ①~③을 각각 실행했을 때 결과로 반환되는 튜플(행)의 수를 적으시오.

① SELECT 학과 FROM 학생;
② SELECT DISTINCT 학과 FROM 학생;
③ SELECT COUNT(DISTINCT 학과) FROM 학생 WHERE 학과 = '화학과';
정답 및 해설

① 140

② 3

③ 1


[해설]

①은 중복 제거 없이 모든 행의 학과 값을 가져오므로 30 + 70 + 40 = 140행이다.

②는 DISTINCT로 중복을 없애 건축과·기계과·화학과 3행만 남는다.

③은 집계 함수 COUNT가 결과를 한 값으로 모으므로 반환되는 튜플은 1행이다. 그 행의 값도 1이지만, 묻는 것은 행의 개수라는 점에 주의한다.

문제 2

22-3

UML에 관한 설명이다. 빈칸 ①~③에 알맞은 용어를 적으시오.

  • ( ① ): UML의 3대 구성 요소 중 하나로, 사물과 사물 사이를 이어 그 의미를 구체화·확장해 표현한다. 연관, 집합, 일반화, 의존 등이 있다.
  • ( ② ): 같은 속성과 연산(메서드), 관계, 의미를 공유하는 객체들을 묶어 정의한 틀이다.
  • ( ③ ): 구현 없이 추상 메서드와 상수만 선언한 형태로, 이를 구현하는 모든 클래스가 특정 메서드를 반드시 갖추도록 강제한다.
정답 및 해설

① 관계(Relationship)

② 클래스(Class)

③ 인터페이스(Interface)


[해설]

UML의 3대 구성 요소는 사물(Things), 관계(Relationship), 다이어그램(Diagram)이다.

  • 관계 — 사물과 사물을 잇는 연결이며 연관·집합·일반화·의존·실체화 등이 있다.
  • 클래스 — 공통 속성과 연산을 가진 객체들을 찍어 내는 설계 틀이다.
  • 인터페이스 — 추상 메서드와 상수만 선언해 두고, 구현하는 클래스가 그 메서드를 반드시 갖추게 하는 명세다.

혼동 주의: 클래스 다이어그램에서 인터페이스는 «interface»로 표시하고, 구현 관계는 점선에 빈 삼각형 화살표(실체화)로 잇는다.

문제 3

22-3

아래 C 프로그램은 지뢰 위치 배열을 읽어, 각 칸 주변 8칸에 있는 지뢰 수를 세어 출력한다. 실행 결과를 적으시오.

#include <stdio.h>

#define R 3
#define C 5

int inside(int r, int c) {
    return r >= 0 && r < R && c >= 0 && c < C;
}

int main(void) {
    int bomb[R][C] = {{1, 0, 0, 1, 0},
                      {0, 0, 1, 0, 0},
                      {0, 1, 0, 0, 1}};
    int hint[R][C] = {0};
    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++) {
            if (!bomb[r][c])
                continue;
            for (int dr = -1; dr <= 1; dr++)
                for (int dc = -1; dc <= 1; dc++) {
                    if (dr == 0 && dc == 0)
                        continue;
                    if (inside(r + dr, c + dc))
                        hint[r + dr][c + dc]++;
                }
        }
    }
    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++)
            printf("%d", hint[r][c]);
        printf("\n");
    }
    return 0;
}
정답 및 해설

02211
23232
11220


[해설]

지뢰 칸을 만날 때 둘레 8칸의 hint를 1씩 올린다. 자기 칸(dr=0, dc=0)은 건너뛰고 inside()로 배열 밖 좌표를 거른다.

  • 지뢰는 (0,0)·(0,3)·(1,2)·(2,1)·(2,4)에 있다.
  • (0,1)은 이웃 (0,0)·(1,2)가 지뢰라 2다.
  • (1,1)은 이웃 (0,0)·(1,2)·(2,1)이 지뢰라 3이다.
  • (1,3)은 이웃 (0,3)·(1,2)·(2,4)가 지뢰라 3이다.
  • (2,4)는 이웃 (1,3)·(1,4)·(2,3)에 지뢰가 없어 0이다.

지뢰 칸도 자기 둘레의 지뢰 수가 찍히며, (0,0)은 이웃에 지뢰가 없어 0이다. 세 행을 차례로 찍으면 02211, 23232, 11220이다.

문제 4

22-3

다음 설명에 해당하는 보안 솔루션을 영문 약어로 적으시오.

  • 방화벽, 침입 탐지 시스템, 백신, 서버, 네트워크 장비 등 여러 곳에서 발생하는 보안 로그와 이벤트를 한곳으로 모은다.
  • 수집한 정보를 서로 연관 지어 분석(상관 분석)해 공격 징후를 찾아내고, 침해 사고에 빠르게 대응하도록 돕는 통합 보안 관제 솔루션이다.
  • 정형·비정형 데이터를 대량으로 다루기 위해 빅데이터 기반 로그 분석 기술을 활용한다.
정답 및 해설

SIEM


[해설]

이기종 보안 장비의 로그를 통합 수집하고 상관 분석하는 관제 솔루션은 SIEM(Security Information and Event Management)이다.

ESM(Enterprise Security Management)이 이벤트 중심의 통합 관리였다면, SIEM은 빅데이터 기반으로 장기간 로그까지 분석한다는 점이 다르다.

문제 5

22-3

CPU 스케줄링 기법에 관한 설명이다. 빈칸 ①~③에 알맞은 기법을 영문 약어로 적으시오.

  • ( ① ): 준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 것을 골라 실행하며, 일단 CPU를 차지하면 끝날 때까지 빼앗기지 않는 비선점 기법이다.
  • ( ② ): 모든 프로세스에 같은 길이의 시간 할당량(Time Quantum)을 주고, 그 안에 끝나지 않으면 준비 큐의 맨 뒤로 보내 다음 프로세스에 CPU를 넘기는 선점 기법이다.
  • ( ③ ): ①을 선점 방식으로 바꾼 것으로, 실행 중인 프로세스보다 남은 실행 시간이 더 짧은 프로세스가 도착하면 즉시 CPU를 넘겨준다.
정답 및 해설

① SJF

② RR

③ SRT


[해설]

세 기법은 모두 CPU 스케줄링 기법으로, 무엇을 기준으로 고르는지와 선점하는지로 구분한다.

  • SJF(Shortest Job First)는 실행 시간이 가장 짧은 작업부터 비선점으로 처리한다.
  • RR(Round Robin)은 같은 시간 할당량을 돌아가며 주고, 그 안에 못 끝낸 프로세스는 준비 큐 맨 뒤로 보낸다.
  • SRT(Shortest Remaining Time)는 SJF에 선점을 더한 것으로, 남은 시간이 더 짧은 프로세스가 오면 바로 CPU를 넘긴다.

혼동 주의: SJF와 SRT는 기준이 같고 선점 여부만 다르다. RR은 할당량이 너무 크면 FCFS와 같아진다.

문제 6

22-3

[부서]와 [사원] 테이블이 아래와 같고, 다음 조건으로 생성되어 있다. 쿼리 ①과 ②의 실행 결과를 각각 적으시오(②는 DELETE 문 실행 후 SELECT 문의 결과).

  • [부서] 테이블의 부서번호는 기본키(PRIMARY KEY)이다.
  • [사원] 테이블의 부서번호는 [부서] 테이블의 부서번호를 참조하는 외래키(FOREIGN KEY)이며, ON DELETE CASCADE 옵션이 지정되어 있다.

[부서]

부서번호부서명
101인사팀
102개발팀
103재무팀
104홍보팀

[사원]

사번이름부서번호
1강서준101
2윤채아101
3조민혁102
4신예린102
5류태오102
6남하윤104
7권도현104
8임소율104
① SELECT COUNT(DISTINCT 부서번호) FROM 사원;

② DELETE FROM 부서 WHERE 부서번호 = 102;
   SELECT COUNT(DISTINCT 사번) FROM 사원;
정답 및 해설

① 3

② 5


[해설]

COUNT(DISTINCT 열)은 그 열에 실제로 들어 있는 서로 다른 값의 개수를 센다.

첫 쿼리는 [사원]에 나오는 부서번호 101, 102, 104만 세므로 결과가 3이다. 사원이 없는 103은 [부서]에만 있어서 세지 않는다.

부서 102를 삭제하면 ON DELETE CASCADE에 따라 그 부서를 참조하던 사번 3, 4, 5도 함께 삭제된다. 남은 사번은 1, 2, 6, 7, 8이므로 결과는 5다.

혼동 주의: CASCADE가 없으면 자식 행이 참조 중인 부모 행은 참조 무결성 위반으로 삭제가 거부된다.

문제 7

22-3

아래는 사원이 프로젝트에 참여하는 상황을 표현한 E-R 다이어그램의 구성 요소 목록이다. 각 요소에 붙은 기호를 보고, 설명 ①~⑤에 해당하는 것을 골라 기호로 적으시오.

기호도형내용
㉠마름모참여
㉡사각형사원
㉢선사원 ― 참여
㉣밑줄 친 타원사번
㉤이중 타원자격증
㉥선사원 ― 사번
㉦타원(참여에 연결)참여시작일

(기호가 붙지 않은 요소: 개체 '프로젝트'(사각형), 사원의 속성 '사원명'(타원), 프로젝트의 속성 '프로젝트코드'(밑줄 친 타원)·'프로젝트명'(타원), 그리고 참여 ― 프로젝트 연결선)

  • ( ① ): 개체 집합의 단일값 속성을 나타낸다.
  • ( ② ): 관계 집합이 가진 속성을 나타낸다.
  • ( ③ ): 개체 집합과 그 속성을 잇는다.
  • ( ④ ): 개체 집합과 관계 집합을 잇는다.
  • ( ⑤ ): 관계 집합을 나타낸다.
정답 및 해설

① ㉣

② ㉦

③ ㉥

④ ㉢

⑤ ㉠


[해설]

E-R 다이어그램에서 개체는 사각형, 관계는 마름모, 속성은 타원, 연결은 선으로 그린다.

  • ① 사원의 속성 중 기호가 붙은 것은 사번(㉣)과 자격증(㉤)이다. 이중 타원인 자격증은 다중값 속성이므로 단일값 속성은 ㉣다. 밑줄은 기본키임을 뜻한다.
  • ② 마름모 참여에 연결된 참여시작일은 관계 속성이므로 ㉦다.
  • ③ 개체 사원과 속성 사번을 잇는 선은 ㉥다.
  • ④ 개체 사원과 관계 참여를 잇는 선은 ㉢다.
  • ⑤ 관계 집합 자체는 마름모 ㉠이다.
문제 8

22-3

아래 Java 프로그램이 출력하는 결과를 적으시오.

public class Main {
    static int[] build(int size) {
        int[] box = new int[size];
        for (int t = 0; t < box.length; t++)
            box[t] = (t * 3) % size;
        return box;
    }
    public static void main(String[] args) {
        int[] data = build(5);
        for (int t = 0; t < data.length; t++)
            System.out.print(data[t]);
    }
}
정답 및 해설

03142


[해설]

build(5)는 길이 5인 배열을 새로 만들어 각 칸에 (t × 3) % 5를 채운 뒤 배열의 참조를 반환한다. main의 data는 그 배열을 그대로 가리킨다.

  • t=0: 0 % 5 = 0
  • t=1: 3 % 5 = 3
  • t=2: 6 % 5 = 1
  • t=3: 9 % 5 = 4
  • t=4: 12 % 5 = 2

공백 없이 print로 이어 찍으므로 03142다.

문제 9

22-3

빈칸 ①, ②에 해당하는 용어를 [보기]에서 골라 적으시오.

  • ( ① ): ARM이 개발한 하드웨어 기반 보안 기술로, 하나의 프로세서를 일반 영역과 격리된 보안 영역으로 나누어 결제 정보·암호 키 같은 민감한 데이터를 보안 영역에서만 처리한다.
  • ( ② ): 사용자가 주소창에 도메인을 입력하다 철자를 틀리거나 빠뜨리는 실수를 노려, 유명 사이트와 비슷한 도메인을 미리 등록해 두는 행위. URL 하이재킹이라고도 한다.

[보기] 공급망 공격, 랜섬웨어, 레이스 컨디션 공격, 사이버 킬체인, 악성 봇, 키로거 공격, 타이포스쿼팅, 트러스트존, APT 공격

정답 및 해설

① 트러스트존(TrustZone)

② 타이포스쿼팅(Typosquatting)


[해설]

프로세서 내부를 보안 영역(Secure World)과 일반 영역(Normal World)으로 나누는 ARM의 기술은 트러스트존(TrustZone)이다.

오타(typo)를 노려 유사 도메인을 선점하는 것은 타이포스쿼팅(Typosquatting)이다. 가짜 사이트로 유도해 피싱이나 악성코드 배포에 악용된다.

문제 10

22-3

형상(버전) 관리 도구에 관한 설명이다. 빈칸 ①~③에 알맞은 도구를 [보기]에서 골라 적으시오.

  • ( ① ): 중앙 서버 하나에 저장소를 두는 클라이언트-서버 방식이다. ②의 단점을 보완해 개발되었으며, 커밋 단위로 리비전 번호를 매겨 소스를 관리한다.
  • ( ② ): 오래전부터 쓰여 온 중앙집중형 도구로, 서버 저장소에 클라이언트가 접속해 버전을 관리하며 변경 이력을 파일 단위로 추적한다.
  • ( ③ ): 개발자마다 로컬 저장소를 갖고 원격 저장소와 동기화하는 분산형 도구로, 처리 속도가 빠르고 대규모 프로젝트에 적합하다.

[보기] Ant, CVS, Cyber Kill Chain, Git, Jenkins, Maven, OLAP, Spring, SVN

정답 및 해설

① SVN

② CVS

③ Git


[해설]

중앙집중형이면서 CVS를 개선한 도구는 SVN(Subversion)이다. 가장 오래된 중앙집중형 도구로 파일 단위 이력을 관리하는 것은 CVS(Concurrent Versions System)다.

로컬·원격 저장소를 나누는 분산형 도구는 Git이다. 네트워크 없이도 로컬에서 커밋·브랜치 작업이 가능하다.

  • Ant·Maven: 빌드 자동화 도구
  • Jenkins: 지속적 통합(CI) 도구
  • Spring: Java 애플리케이션 프레임워크
  • OLAP·Cyber Kill Chain: 각각 다차원 분석 기술, 공격 단계 모델
문제 11

22-3

아래 Python 코드의 출력 결과를 적으시오.

nums = [4, 7, 10, 13]
nums = list(map(lambda v: v * 2 - 5, nums))
print(nums)
정답 및 해설

[3, 9, 15, 21]


[해설]

map()은 각 원소에 람다 v * 2 − 5를 적용하고, list()가 그 결과를 다시 리스트로 만든다.

4×2 − 5 = 3
7×2 − 5 = 9
10×2 − 5 = 15
13×2 − 5 = 21

print는 리스트를 대괄호와 쉼표 형식으로 찍으므로 [3, 9, 15, 21]이 출력된다.

문제 12

22-3

관계대수 연산과 그 기호에 관한 설명이다. 빈칸 ①~⑤에 들어갈 기호를 각각 적으시오.

  • ( ① ): 두 릴레이션의 튜플을 가능한 모든 조합으로 이어 붙인다(카티션 프로덕트).
  • ( ② ): 앞 릴레이션에는 있고 뒤 릴레이션에는 없는 튜플만 남긴다(차집합).
  • ( ③ ): 공통 속성의 값이 같은 튜플끼리 하나로 합친다(조인).
  • ( ④ ): 두 릴레이션 중 어느 한쪽에라도 있는 튜플을 중복 없이 모은다(합집합).
  • ( ⑤ ): 릴레이션에서 지정한 속성(열)만 골라낸다(프로젝트).
정답 및 해설

① ×

② −

③ ⋈

④ ∪

⑤ π


[해설]

관계대수는 일반 집합 연산(합집합·차집합·교집합·카티션 프로덕트)과 순수 관계 연산(셀렉트·프로젝트·조인·디비전)으로 나뉜다.

  • × — 카티션 프로덕트이며, 두 릴레이션 튜플의 모든 조합을 만든다.
  • − — 차집합이며, 앞 릴레이션에만 있는 튜플을 남긴다.
  • ⋈ — 조인이며, 공통 속성 값이 같은 튜플끼리 합친다(나비 모양 기호).
  • ∪ — 합집합이며, 양쪽 튜플을 중복 없이 모은다.
  • π(파이) — 프로젝트이며, 지정한 열만 골라낸다.

혼동 주의: 조건에 맞는 행을 고르는 셀렉트는 σ(시그마)로, 열을 고르는 π와 헷갈리기 쉽다.

문제 13

22-3

아래 C 프로그램이 출력하는 값을 적으시오.

#include <stdio.h>

int main(void) {
    int n = 2, found = 0;
    while (n <= 500) {
        int sum = 0;
        for (int d = 1; d <= n / 2; d++)
            if (n % d == 0)
                sum += d;
        if (sum == n)
            found++;
        n++;
    }
    printf("%d", found);
    return 0;
}
정답 및 해설

3


[해설]

안쪽 for는 n의 약수 중 n 자신을 뺀 것(1 ~ n/2)을 모두 더한다. 그 합이 n과 같으면 found를 늘리므로, 2~500 사이의 완전수 개수를 세는 코드다.

  • 6 = 1 + 2 + 3
  • 28 = 1 + 2 + 4 + 7 + 14
  • 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248

다음 완전수 8128은 범위를 벗어나므로 출력은 3이다.

문제 14

22-3

네트워크 192.168.1.0/24를 고정 길이 서브넷 마스크(FLSM) 방식으로 나누어 서브넷 3개를 확보하려 한다. 서브넷 번호가 낮은 순서로 할당할 때, 두 번째 서브넷의 브로드캐스트 주소를 10진수 점 표기로 적으시오.

정답 및 해설

192.168.1.127


[해설]

FLSM은 모든 서브넷을 같은 크기로 나누므로 서브넷 수가 2의 거듭제곱 단위로 정해진다. 3개가 필요하면 22=42^2 = 4개로 나눠야 하므로 서브넷 비트 2개를 빌린다.

  • 새 프리픽스: /24 + 2 = /26 (마스크 255.255.255.192)
  • 서브넷당 주소 수: 26=642^{6} = 64
  • 1번: 192.168.1.0 ~ .63
  • 2번: 192.168.1.64 ~ .127

브로드캐스트 주소는 각 서브넷의 마지막 주소이므로 두 번째 서브넷은 192.168.1.127이다.

문제 15

22-3

GoF 디자인 패턴에 관한 설명이다. 빈칸 ①, ②에 해당하는 패턴의 이름을 적으시오.

  • ( ① ) 패턴: 추상화(기능) 계층과 구현 계층을 별개의 클래스 계층으로 떼어 놓고 둘 사이를 연결만 해 둔다. 그 덕분에 기능 쪽과 구현 쪽을 서로 영향 없이 따로 확장할 수 있다.
  • ( ② ) 패턴: 어떤 객체의 상태가 변하면, 그 객체를 구독하고 있는 여러 객체에 변경 사실이 자동으로 통지되어 갱신된다. 일대다 의존 관계를 느슨한 결합으로 유지하는 데 쓴다.
정답 및 해설

① 브리지(Bridge)

② 옵저버(Observer)


[해설]

GoF 패턴에서 추상화와 구현을 분리하는 패턴은 구조 패턴이고, 객체 간 통지를 다루는 패턴은 행위 패턴이다.

  • 브리지(Bridge) — 기능 계층과 구현 계층 사이에 '다리'만 놓아 두 계층을 따로 확장한다.
  • 옵저버(Observer) — 주체(Subject)의 상태가 바뀌면 등록된 관찰자들에게 자동으로 알리는 일대다 구조다.

혼동 주의: 어댑터(Adapter)는 이미 있는 클래스의 맞지 않는 인터페이스를 맞춰 주는 패턴이고, 브리지는 처음부터 두 계층을 나눠 설계하는 패턴이다.

문제 16

22-3

아래 Java 프로그램을 실행했을 때 출력되는 값을 적으시오.

public class Main {
    public static void main(String[] args) {
        int last = 0;
        for (int n = 1; n < 700; n++) {
            if (n % 7 == 0 && n % 2 == 1)
                last = n;
        }
        System.out.print(last);
    }
}
정답 및 해설

693


[해설]

반복문은 1부터 699까지 돌면서 7의 배수이면서 홀수인 n을 만날 때마다 last를 덮어쓰므로, 마지막에 남는 값은 조건을 만족하는 가장 큰 수다.

700은 n < 700 범위 밖이고 그 아래 7의 배수 693(= 7 × 99)은 홀수라 출력은 693이다.

686처럼 짝수인 7의 배수는 n % 2 == 1 조건에서 걸러진다.

문제 17

22-3

다음 설명에 해당하는 인증 기술을 적으시오.

  • 사용자가 한 번만 로그인하면, 이후 별도의 재인증 없이 여러 시스템과 서비스의 자원을 이용할 수 있다.
  • 커버로스(Kerberos) 같은 티켓 기반 인증 프로토콜로 구현하는 대표적인 기술이다.
정답 및 해설

SSO(Single Sign-On)


[해설]

한 번의 인증으로 여러 시스템에 접근하게 하는 기술은 SSO(Single Sign-On)다.

커버로스는 인증 서버가 발급한 티켓(TGT)을 제시해 각 서비스 티켓을 받는 방식이라, 비밀번호를 반복 입력하지 않고 SSO를 실현한다. 편리한 대신 인증 서버가 뚫리면 모든 서비스가 위험해지므로 다중 인증을 함께 쓴다.

문제 18

22-3

아래 Java 프로그램의 실행 결과를 적으시오.

public class Main {
    public static void main(String[] args) {
        int[] score = {42, 17, 88, 17, 63, 5};
        int[] order = new int[score.length];
        for (int a = 0; a < score.length; a++) {
            order[a] = 1;
            for (int b = 0; b < score.length; b++)
                if (score[b] < score[a])
                    order[a]++;
        }
        for (int v : order)
            System.out.print(v);
    }
}
정답 및 해설

426251


[해설]

order[a]는 1에서 시작해 score[a]보다 작은 값의 개수만큼 늘어난다. 즉 오름차순 순위(작은 값이 1위)다.

  • 42: 17, 17, 5가 더 작음 → 4
  • 17(두 번): 5만 더 작음 → 각각 2
  • 88: 나머지 5개가 모두 작음 → 6
  • 63: 42, 17, 17, 5가 작음 → 5
  • 5: 더 작은 값 없음 → 1

같은 값 17은 서로를 세지 않아(엄격한 <) 공동 2위가 된다. 공백 없이 이어 찍으므로 426251이다.

문제 19

22-3

빈칸 ①, ②에 알맞은 용어를 적으시오.

  • ( ① ): 시스템의 기술적 취약점이 아니라, 사람의 신뢰·호기심·두려움 같은 심리를 이용해 비밀번호나 기밀을 알아내는 공격 기법. 관리자를 사칭한 전화, 긴급 요청을 가장한 메일 등이 대표적이다.
  • ( ② ): 조직이 수집해 저장만 해 두었을 뿐, 분석이나 의사결정에 전혀 쓰이지 않고 방치된 대량의 데이터.
정답 및 해설

① 사회 공학(Social Engineering)

② 다크 데이터(Dark Data)


[해설]

기술이 아닌 사람의 심리적 허점을 노리는 공격은 사회 공학(Social Engineering)이다. 피싱, 프리텍스팅, 테일게이팅 등이 여기에 속한다.

쌓아 두기만 하고 활용하지 않는 데이터는 다크 데이터(Dark Data)다. 저장 비용과 유출 위험만 늘리므로 분류·폐기 정책이 필요하다.

문제 20

22-3

다음 설명에 해당하는 블랙박스 테스트 기법을 [보기]에서 골라 적으시오.

  • 입력 값을 동등한 구간으로 나눈 뒤, 오류가 몰리기 쉬운 구간의 경계와 그 바로 안팎의 값을 테스트 데이터로 고른다.
  • 예: 점수 구간을 0, 40, 70, 100을 경계로 나누었다면 −1, 0, 1, 39, 40, 41, 69, 70, 71, 99, 100, 101을 입력해 본다.

[보기] Boundary Value Analysis, Cause-Effect Graph, Classification Tree Method, Decision Table, Equivalence Partitioning, State Transition, Use Case

정답 및 해설

Boundary Value Analysis


[해설]

경계와 그 인접 값을 집중적으로 시험하는 기법은 Boundary Value Analysis(경곗값 분석)다.

프로그래머가 <와 <=를 혼동하는 식의 실수가 경계에서 주로 드러나기 때문에 쓰인다.

  • Equivalence Partitioning: 구간마다 대표값 하나만 고른다(동등 분할).
  • Decision Table: 조건 조합과 그에 따른 행동을 표로 정리한다.
  • Cause-Effect Graph: 입력(원인)과 출력(결과)의 논리 관계를 그래프로 분석한다.
  • State Transition: 상태와 전이 이벤트를 기준으로 케이스를 만든다.
정보처리기사 실기 기출문제모두CBT · moducbt.com
2022년 정보처리기사실기 3회차
총 20문항 · 주관식 · 정답·해설 포함
문제 1

22-3

[학생] 테이블에 건축과 30명, 기계과 70명, 화학과 40명의 튜플이 저장되어 있다(학과 속성명은 학과). 다음 SQL 문 ①~③을 각각 실행했을 때 결과로 반환되는 튜플(행)의 수를 적으시오.

① SELECT 학과 FROM 학생;
② SELECT DISTINCT 학과 FROM 학생;
③ SELECT COUNT(DISTINCT 학과) FROM 학생 WHERE 학과 = '화학과';
정답 및 해설

① 140

② 3

③ 1


[해설]

①은 중복 제거 없이 모든 행의 학과 값을 가져오므로 30 + 70 + 40 = 140행이다.

②는 DISTINCT로 중복을 없애 건축과·기계과·화학과 3행만 남는다.

③은 집계 함수 COUNT가 결과를 한 값으로 모으므로 반환되는 튜플은 1행이다. 그 행의 값도 1이지만, 묻는 것은 행의 개수라는 점에 주의한다.

문제 2

22-3

UML에 관한 설명이다. 빈칸 ①~③에 알맞은 용어를 적으시오.

  • ( ① ): UML의 3대 구성 요소 중 하나로, 사물과 사물 사이를 이어 그 의미를 구체화·확장해 표현한다. 연관, 집합, 일반화, 의존 등이 있다.
  • ( ② ): 같은 속성과 연산(메서드), 관계, 의미를 공유하는 객체들을 묶어 정의한 틀이다.
  • ( ③ ): 구현 없이 추상 메서드와 상수만 선언한 형태로, 이를 구현하는 모든 클래스가 특정 메서드를 반드시 갖추도록 강제한다.
정답 및 해설

① 관계(Relationship)

② 클래스(Class)

③ 인터페이스(Interface)


[해설]

UML의 3대 구성 요소는 사물(Things), 관계(Relationship), 다이어그램(Diagram)이다.

  • 관계 — 사물과 사물을 잇는 연결이며 연관·집합·일반화·의존·실체화 등이 있다.
  • 클래스 — 공통 속성과 연산을 가진 객체들을 찍어 내는 설계 틀이다.
  • 인터페이스 — 추상 메서드와 상수만 선언해 두고, 구현하는 클래스가 그 메서드를 반드시 갖추게 하는 명세다.

혼동 주의: 클래스 다이어그램에서 인터페이스는 «interface»로 표시하고, 구현 관계는 점선에 빈 삼각형 화살표(실체화)로 잇는다.

문제 3

22-3

아래 C 프로그램은 지뢰 위치 배열을 읽어, 각 칸 주변 8칸에 있는 지뢰 수를 세어 출력한다. 실행 결과를 적으시오.

#include <stdio.h>

#define R 3
#define C 5

int inside(int r, int c) {
    return r >= 0 && r < R && c >= 0 && c < C;
}

int main(void) {
    int bomb[R][C] = {{1, 0, 0, 1, 0},
                      {0, 0, 1, 0, 0},
                      {0, 1, 0, 0, 1}};
    int hint[R][C] = {0};
    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++) {
            if (!bomb[r][c])
                continue;
            for (int dr = -1; dr <= 1; dr++)
                for (int dc = -1; dc <= 1; dc++) {
                    if (dr == 0 && dc == 0)
                        continue;
                    if (inside(r + dr, c + dc))
                        hint[r + dr][c + dc]++;
                }
        }
    }
    for (int r = 0; r < R; r++) {
        for (int c = 0; c < C; c++)
            printf("%d", hint[r][c]);
        printf("\n");
    }
    return 0;
}
정답 및 해설

02211
23232
11220


[해설]

지뢰 칸을 만날 때 둘레 8칸의 hint를 1씩 올린다. 자기 칸(dr=0, dc=0)은 건너뛰고 inside()로 배열 밖 좌표를 거른다.

  • 지뢰는 (0,0)·(0,3)·(1,2)·(2,1)·(2,4)에 있다.
  • (0,1)은 이웃 (0,0)·(1,2)가 지뢰라 2다.
  • (1,1)은 이웃 (0,0)·(1,2)·(2,1)이 지뢰라 3이다.
  • (1,3)은 이웃 (0,3)·(1,2)·(2,4)가 지뢰라 3이다.
  • (2,4)는 이웃 (1,3)·(1,4)·(2,3)에 지뢰가 없어 0이다.

지뢰 칸도 자기 둘레의 지뢰 수가 찍히며, (0,0)은 이웃에 지뢰가 없어 0이다. 세 행을 차례로 찍으면 02211, 23232, 11220이다.

문제 4

22-3

다음 설명에 해당하는 보안 솔루션을 영문 약어로 적으시오.

  • 방화벽, 침입 탐지 시스템, 백신, 서버, 네트워크 장비 등 여러 곳에서 발생하는 보안 로그와 이벤트를 한곳으로 모은다.
  • 수집한 정보를 서로 연관 지어 분석(상관 분석)해 공격 징후를 찾아내고, 침해 사고에 빠르게 대응하도록 돕는 통합 보안 관제 솔루션이다.
  • 정형·비정형 데이터를 대량으로 다루기 위해 빅데이터 기반 로그 분석 기술을 활용한다.
정답 및 해설

SIEM


[해설]

이기종 보안 장비의 로그를 통합 수집하고 상관 분석하는 관제 솔루션은 SIEM(Security Information and Event Management)이다.

ESM(Enterprise Security Management)이 이벤트 중심의 통합 관리였다면, SIEM은 빅데이터 기반으로 장기간 로그까지 분석한다는 점이 다르다.

문제 5

22-3

CPU 스케줄링 기법에 관한 설명이다. 빈칸 ①~③에 알맞은 기법을 영문 약어로 적으시오.

  • ( ① ): 준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 것을 골라 실행하며, 일단 CPU를 차지하면 끝날 때까지 빼앗기지 않는 비선점 기법이다.
  • ( ② ): 모든 프로세스에 같은 길이의 시간 할당량(Time Quantum)을 주고, 그 안에 끝나지 않으면 준비 큐의 맨 뒤로 보내 다음 프로세스에 CPU를 넘기는 선점 기법이다.
  • ( ③ ): ①을 선점 방식으로 바꾼 것으로, 실행 중인 프로세스보다 남은 실행 시간이 더 짧은 프로세스가 도착하면 즉시 CPU를 넘겨준다.
정답 및 해설

① SJF

② RR

③ SRT


[해설]

세 기법은 모두 CPU 스케줄링 기법으로, 무엇을 기준으로 고르는지와 선점하는지로 구분한다.

  • SJF(Shortest Job First)는 실행 시간이 가장 짧은 작업부터 비선점으로 처리한다.
  • RR(Round Robin)은 같은 시간 할당량을 돌아가며 주고, 그 안에 못 끝낸 프로세스는 준비 큐 맨 뒤로 보낸다.
  • SRT(Shortest Remaining Time)는 SJF에 선점을 더한 것으로, 남은 시간이 더 짧은 프로세스가 오면 바로 CPU를 넘긴다.

혼동 주의: SJF와 SRT는 기준이 같고 선점 여부만 다르다. RR은 할당량이 너무 크면 FCFS와 같아진다.

문제 6

22-3

[부서]와 [사원] 테이블이 아래와 같고, 다음 조건으로 생성되어 있다. 쿼리 ①과 ②의 실행 결과를 각각 적으시오(②는 DELETE 문 실행 후 SELECT 문의 결과).

  • [부서] 테이블의 부서번호는 기본키(PRIMARY KEY)이다.
  • [사원] 테이블의 부서번호는 [부서] 테이블의 부서번호를 참조하는 외래키(FOREIGN KEY)이며, ON DELETE CASCADE 옵션이 지정되어 있다.

[부서]

부서번호부서명
101인사팀
102개발팀
103재무팀
104홍보팀

[사원]

사번이름부서번호
1강서준101
2윤채아101
3조민혁102
4신예린102
5류태오102
6남하윤104
7권도현104
8임소율104
① SELECT COUNT(DISTINCT 부서번호) FROM 사원;

② DELETE FROM 부서 WHERE 부서번호 = 102;
   SELECT COUNT(DISTINCT 사번) FROM 사원;
정답 및 해설

① 3

② 5


[해설]

COUNT(DISTINCT 열)은 그 열에 실제로 들어 있는 서로 다른 값의 개수를 센다.

첫 쿼리는 [사원]에 나오는 부서번호 101, 102, 104만 세므로 결과가 3이다. 사원이 없는 103은 [부서]에만 있어서 세지 않는다.

부서 102를 삭제하면 ON DELETE CASCADE에 따라 그 부서를 참조하던 사번 3, 4, 5도 함께 삭제된다. 남은 사번은 1, 2, 6, 7, 8이므로 결과는 5다.

혼동 주의: CASCADE가 없으면 자식 행이 참조 중인 부모 행은 참조 무결성 위반으로 삭제가 거부된다.

문제 7

22-3

아래는 사원이 프로젝트에 참여하는 상황을 표현한 E-R 다이어그램의 구성 요소 목록이다. 각 요소에 붙은 기호를 보고, 설명 ①~⑤에 해당하는 것을 골라 기호로 적으시오.

기호도형내용
㉠마름모참여
㉡사각형사원
㉢선사원 ― 참여
㉣밑줄 친 타원사번
㉤이중 타원자격증
㉥선사원 ― 사번
㉦타원(참여에 연결)참여시작일

(기호가 붙지 않은 요소: 개체 '프로젝트'(사각형), 사원의 속성 '사원명'(타원), 프로젝트의 속성 '프로젝트코드'(밑줄 친 타원)·'프로젝트명'(타원), 그리고 참여 ― 프로젝트 연결선)

  • ( ① ): 개체 집합의 단일값 속성을 나타낸다.
  • ( ② ): 관계 집합이 가진 속성을 나타낸다.
  • ( ③ ): 개체 집합과 그 속성을 잇는다.
  • ( ④ ): 개체 집합과 관계 집합을 잇는다.
  • ( ⑤ ): 관계 집합을 나타낸다.
정답 및 해설

① ㉣

② ㉦

③ ㉥

④ ㉢

⑤ ㉠


[해설]

E-R 다이어그램에서 개체는 사각형, 관계는 마름모, 속성은 타원, 연결은 선으로 그린다.

  • ① 사원의 속성 중 기호가 붙은 것은 사번(㉣)과 자격증(㉤)이다. 이중 타원인 자격증은 다중값 속성이므로 단일값 속성은 ㉣다. 밑줄은 기본키임을 뜻한다.
  • ② 마름모 참여에 연결된 참여시작일은 관계 속성이므로 ㉦다.
  • ③ 개체 사원과 속성 사번을 잇는 선은 ㉥다.
  • ④ 개체 사원과 관계 참여를 잇는 선은 ㉢다.
  • ⑤ 관계 집합 자체는 마름모 ㉠이다.
문제 8

22-3

아래 Java 프로그램이 출력하는 결과를 적으시오.

public class Main {
    static int[] build(int size) {
        int[] box = new int[size];
        for (int t = 0; t < box.length; t++)
            box[t] = (t * 3) % size;
        return box;
    }
    public static void main(String[] args) {
        int[] data = build(5);
        for (int t = 0; t < data.length; t++)
            System.out.print(data[t]);
    }
}
정답 및 해설

03142


[해설]

build(5)는 길이 5인 배열을 새로 만들어 각 칸에 (t × 3) % 5를 채운 뒤 배열의 참조를 반환한다. main의 data는 그 배열을 그대로 가리킨다.

  • t=0: 0 % 5 = 0
  • t=1: 3 % 5 = 3
  • t=2: 6 % 5 = 1
  • t=3: 9 % 5 = 4
  • t=4: 12 % 5 = 2

공백 없이 print로 이어 찍으므로 03142다.

문제 9

22-3

빈칸 ①, ②에 해당하는 용어를 [보기]에서 골라 적으시오.

  • ( ① ): ARM이 개발한 하드웨어 기반 보안 기술로, 하나의 프로세서를 일반 영역과 격리된 보안 영역으로 나누어 결제 정보·암호 키 같은 민감한 데이터를 보안 영역에서만 처리한다.
  • ( ② ): 사용자가 주소창에 도메인을 입력하다 철자를 틀리거나 빠뜨리는 실수를 노려, 유명 사이트와 비슷한 도메인을 미리 등록해 두는 행위. URL 하이재킹이라고도 한다.

[보기] 공급망 공격, 랜섬웨어, 레이스 컨디션 공격, 사이버 킬체인, 악성 봇, 키로거 공격, 타이포스쿼팅, 트러스트존, APT 공격

정답 및 해설

① 트러스트존(TrustZone)

② 타이포스쿼팅(Typosquatting)


[해설]

프로세서 내부를 보안 영역(Secure World)과 일반 영역(Normal World)으로 나누는 ARM의 기술은 트러스트존(TrustZone)이다.

오타(typo)를 노려 유사 도메인을 선점하는 것은 타이포스쿼팅(Typosquatting)이다. 가짜 사이트로 유도해 피싱이나 악성코드 배포에 악용된다.

문제 10

22-3

형상(버전) 관리 도구에 관한 설명이다. 빈칸 ①~③에 알맞은 도구를 [보기]에서 골라 적으시오.

  • ( ① ): 중앙 서버 하나에 저장소를 두는 클라이언트-서버 방식이다. ②의 단점을 보완해 개발되었으며, 커밋 단위로 리비전 번호를 매겨 소스를 관리한다.
  • ( ② ): 오래전부터 쓰여 온 중앙집중형 도구로, 서버 저장소에 클라이언트가 접속해 버전을 관리하며 변경 이력을 파일 단위로 추적한다.
  • ( ③ ): 개발자마다 로컬 저장소를 갖고 원격 저장소와 동기화하는 분산형 도구로, 처리 속도가 빠르고 대규모 프로젝트에 적합하다.

[보기] Ant, CVS, Cyber Kill Chain, Git, Jenkins, Maven, OLAP, Spring, SVN

정답 및 해설

① SVN

② CVS

③ Git


[해설]

중앙집중형이면서 CVS를 개선한 도구는 SVN(Subversion)이다. 가장 오래된 중앙집중형 도구로 파일 단위 이력을 관리하는 것은 CVS(Concurrent Versions System)다.

로컬·원격 저장소를 나누는 분산형 도구는 Git이다. 네트워크 없이도 로컬에서 커밋·브랜치 작업이 가능하다.

  • Ant·Maven: 빌드 자동화 도구
  • Jenkins: 지속적 통합(CI) 도구
  • Spring: Java 애플리케이션 프레임워크
  • OLAP·Cyber Kill Chain: 각각 다차원 분석 기술, 공격 단계 모델
문제 11

22-3

아래 Python 코드의 출력 결과를 적으시오.

nums = [4, 7, 10, 13]
nums = list(map(lambda v: v * 2 - 5, nums))
print(nums)
정답 및 해설

[3, 9, 15, 21]


[해설]

map()은 각 원소에 람다 v * 2 − 5를 적용하고, list()가 그 결과를 다시 리스트로 만든다.

4×2 − 5 = 3
7×2 − 5 = 9
10×2 − 5 = 15
13×2 − 5 = 21

print는 리스트를 대괄호와 쉼표 형식으로 찍으므로 [3, 9, 15, 21]이 출력된다.

문제 12

22-3

관계대수 연산과 그 기호에 관한 설명이다. 빈칸 ①~⑤에 들어갈 기호를 각각 적으시오.

  • ( ① ): 두 릴레이션의 튜플을 가능한 모든 조합으로 이어 붙인다(카티션 프로덕트).
  • ( ② ): 앞 릴레이션에는 있고 뒤 릴레이션에는 없는 튜플만 남긴다(차집합).
  • ( ③ ): 공통 속성의 값이 같은 튜플끼리 하나로 합친다(조인).
  • ( ④ ): 두 릴레이션 중 어느 한쪽에라도 있는 튜플을 중복 없이 모은다(합집합).
  • ( ⑤ ): 릴레이션에서 지정한 속성(열)만 골라낸다(프로젝트).
정답 및 해설

① ×

② −

③ ⋈

④ ∪

⑤ π


[해설]

관계대수는 일반 집합 연산(합집합·차집합·교집합·카티션 프로덕트)과 순수 관계 연산(셀렉트·프로젝트·조인·디비전)으로 나뉜다.

  • × — 카티션 프로덕트이며, 두 릴레이션 튜플의 모든 조합을 만든다.
  • − — 차집합이며, 앞 릴레이션에만 있는 튜플을 남긴다.
  • ⋈ — 조인이며, 공통 속성 값이 같은 튜플끼리 합친다(나비 모양 기호).
  • ∪ — 합집합이며, 양쪽 튜플을 중복 없이 모은다.
  • π(파이) — 프로젝트이며, 지정한 열만 골라낸다.

혼동 주의: 조건에 맞는 행을 고르는 셀렉트는 σ(시그마)로, 열을 고르는 π와 헷갈리기 쉽다.

문제 13

22-3

아래 C 프로그램이 출력하는 값을 적으시오.

#include <stdio.h>

int main(void) {
    int n = 2, found = 0;
    while (n <= 500) {
        int sum = 0;
        for (int d = 1; d <= n / 2; d++)
            if (n % d == 0)
                sum += d;
        if (sum == n)
            found++;
        n++;
    }
    printf("%d", found);
    return 0;
}
정답 및 해설

3


[해설]

안쪽 for는 n의 약수 중 n 자신을 뺀 것(1 ~ n/2)을 모두 더한다. 그 합이 n과 같으면 found를 늘리므로, 2~500 사이의 완전수 개수를 세는 코드다.

  • 6 = 1 + 2 + 3
  • 28 = 1 + 2 + 4 + 7 + 14
  • 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248

다음 완전수 8128은 범위를 벗어나므로 출력은 3이다.

문제 14

22-3

네트워크 192.168.1.0/24를 고정 길이 서브넷 마스크(FLSM) 방식으로 나누어 서브넷 3개를 확보하려 한다. 서브넷 번호가 낮은 순서로 할당할 때, 두 번째 서브넷의 브로드캐스트 주소를 10진수 점 표기로 적으시오.

정답 및 해설

192.168.1.127


[해설]

FLSM은 모든 서브넷을 같은 크기로 나누므로 서브넷 수가 2의 거듭제곱 단위로 정해진다. 3개가 필요하면 22=42^2 = 4개로 나눠야 하므로 서브넷 비트 2개를 빌린다.

  • 새 프리픽스: /24 + 2 = /26 (마스크 255.255.255.192)
  • 서브넷당 주소 수: 26=642^{6} = 64
  • 1번: 192.168.1.0 ~ .63
  • 2번: 192.168.1.64 ~ .127

브로드캐스트 주소는 각 서브넷의 마지막 주소이므로 두 번째 서브넷은 192.168.1.127이다.

문제 15

22-3

GoF 디자인 패턴에 관한 설명이다. 빈칸 ①, ②에 해당하는 패턴의 이름을 적으시오.

  • ( ① ) 패턴: 추상화(기능) 계층과 구현 계층을 별개의 클래스 계층으로 떼어 놓고 둘 사이를 연결만 해 둔다. 그 덕분에 기능 쪽과 구현 쪽을 서로 영향 없이 따로 확장할 수 있다.
  • ( ② ) 패턴: 어떤 객체의 상태가 변하면, 그 객체를 구독하고 있는 여러 객체에 변경 사실이 자동으로 통지되어 갱신된다. 일대다 의존 관계를 느슨한 결합으로 유지하는 데 쓴다.
정답 및 해설

① 브리지(Bridge)

② 옵저버(Observer)


[해설]

GoF 패턴에서 추상화와 구현을 분리하는 패턴은 구조 패턴이고, 객체 간 통지를 다루는 패턴은 행위 패턴이다.

  • 브리지(Bridge) — 기능 계층과 구현 계층 사이에 '다리'만 놓아 두 계층을 따로 확장한다.
  • 옵저버(Observer) — 주체(Subject)의 상태가 바뀌면 등록된 관찰자들에게 자동으로 알리는 일대다 구조다.

혼동 주의: 어댑터(Adapter)는 이미 있는 클래스의 맞지 않는 인터페이스를 맞춰 주는 패턴이고, 브리지는 처음부터 두 계층을 나눠 설계하는 패턴이다.

문제 16

22-3

아래 Java 프로그램을 실행했을 때 출력되는 값을 적으시오.

public class Main {
    public static void main(String[] args) {
        int last = 0;
        for (int n = 1; n < 700; n++) {
            if (n % 7 == 0 && n % 2 == 1)
                last = n;
        }
        System.out.print(last);
    }
}
정답 및 해설

693


[해설]

반복문은 1부터 699까지 돌면서 7의 배수이면서 홀수인 n을 만날 때마다 last를 덮어쓰므로, 마지막에 남는 값은 조건을 만족하는 가장 큰 수다.

700은 n < 700 범위 밖이고 그 아래 7의 배수 693(= 7 × 99)은 홀수라 출력은 693이다.

686처럼 짝수인 7의 배수는 n % 2 == 1 조건에서 걸러진다.

문제 17

22-3

다음 설명에 해당하는 인증 기술을 적으시오.

  • 사용자가 한 번만 로그인하면, 이후 별도의 재인증 없이 여러 시스템과 서비스의 자원을 이용할 수 있다.
  • 커버로스(Kerberos) 같은 티켓 기반 인증 프로토콜로 구현하는 대표적인 기술이다.
정답 및 해설

SSO(Single Sign-On)


[해설]

한 번의 인증으로 여러 시스템에 접근하게 하는 기술은 SSO(Single Sign-On)다.

커버로스는 인증 서버가 발급한 티켓(TGT)을 제시해 각 서비스 티켓을 받는 방식이라, 비밀번호를 반복 입력하지 않고 SSO를 실현한다. 편리한 대신 인증 서버가 뚫리면 모든 서비스가 위험해지므로 다중 인증을 함께 쓴다.

문제 18

22-3

아래 Java 프로그램의 실행 결과를 적으시오.

public class Main {
    public static void main(String[] args) {
        int[] score = {42, 17, 88, 17, 63, 5};
        int[] order = new int[score.length];
        for (int a = 0; a < score.length; a++) {
            order[a] = 1;
            for (int b = 0; b < score.length; b++)
                if (score[b] < score[a])
                    order[a]++;
        }
        for (int v : order)
            System.out.print(v);
    }
}
정답 및 해설

426251


[해설]

order[a]는 1에서 시작해 score[a]보다 작은 값의 개수만큼 늘어난다. 즉 오름차순 순위(작은 값이 1위)다.

  • 42: 17, 17, 5가 더 작음 → 4
  • 17(두 번): 5만 더 작음 → 각각 2
  • 88: 나머지 5개가 모두 작음 → 6
  • 63: 42, 17, 17, 5가 작음 → 5
  • 5: 더 작은 값 없음 → 1

같은 값 17은 서로를 세지 않아(엄격한 <) 공동 2위가 된다. 공백 없이 이어 찍으므로 426251이다.

문제 19

22-3

빈칸 ①, ②에 알맞은 용어를 적으시오.

  • ( ① ): 시스템의 기술적 취약점이 아니라, 사람의 신뢰·호기심·두려움 같은 심리를 이용해 비밀번호나 기밀을 알아내는 공격 기법. 관리자를 사칭한 전화, 긴급 요청을 가장한 메일 등이 대표적이다.
  • ( ② ): 조직이 수집해 저장만 해 두었을 뿐, 분석이나 의사결정에 전혀 쓰이지 않고 방치된 대량의 데이터.
정답 및 해설

① 사회 공학(Social Engineering)

② 다크 데이터(Dark Data)


[해설]

기술이 아닌 사람의 심리적 허점을 노리는 공격은 사회 공학(Social Engineering)이다. 피싱, 프리텍스팅, 테일게이팅 등이 여기에 속한다.

쌓아 두기만 하고 활용하지 않는 데이터는 다크 데이터(Dark Data)다. 저장 비용과 유출 위험만 늘리므로 분류·폐기 정책이 필요하다.

문제 20

22-3

다음 설명에 해당하는 블랙박스 테스트 기법을 [보기]에서 골라 적으시오.

  • 입력 값을 동등한 구간으로 나눈 뒤, 오류가 몰리기 쉬운 구간의 경계와 그 바로 안팎의 값을 테스트 데이터로 고른다.
  • 예: 점수 구간을 0, 40, 70, 100을 경계로 나누었다면 −1, 0, 1, 39, 40, 41, 69, 70, 71, 99, 100, 101을 입력해 본다.

[보기] Boundary Value Analysis, Cause-Effect Graph, Classification Tree Method, Decision Table, Equivalence Partitioning, State Transition, Use Case

정답 및 해설

Boundary Value Analysis


[해설]

경계와 그 인접 값을 집중적으로 시험하는 기법은 Boundary Value Analysis(경곗값 분석)다.

프로그래머가 <와 <=를 혼동하는 식의 실수가 경계에서 주로 드러나기 때문에 쓰인다.

  • Equivalence Partitioning: 구간마다 대표값 하나만 고른다(동등 분할).
  • Decision Table: 조건 조합과 그에 따른 행동을 표로 정리한다.
  • Cause-Effect Graph: 입력(원인)과 출력(결과)의 논리 관계를 그래프로 분석한다.
  • State Transition: 상태와 전이 이벤트를 기준으로 케이스를 만든다.