2020년 정보처리기사실기 1회차 기출문제 정답·해설 페이지
- k=3: 12/3 = 4
- k=2: 9/3 = 3
- k=1: 6/3 = 2
- k=0: 3/3 = 1
- 1991년 로널드 라이베스트(Ronald Rivest)가 이전의 MD4를 대신하도록 설계했다.
- RFC 1321로 규정되어 있으며 128비트 해시값을 만든다.
- 파일이나 프로그램이 원본과 같은지 확인하는 무결성 검사에 주로 쓰인다.
- F: B와 C가 호출 → 팬인 2
- H: E와 F가 호출 → 팬인 2
- 나머지 B·C·D·E·G·I·J는 팬인 1, 최상위 A는 0
- 공격자는 패킷의 출발지 IP 주소와 포트를 위조하여 목적지 주소·포트와 똑같이 만든다.
- 이 패킷을 받은 대상 시스템은 응답을 자기 자신에게 보내게 되어 루프에 빠진다.
- 그 결과 시스템이 느려지거나 멈춰 정상적인 서비스를 제공하지 못한다.
- 스머프: 브로드캐스트 주소로 ICMP 요청을 보내 응답을 한 대상에 몰아준다.
- 티어드롭: IP 단편의 오프셋을 조작해 재조립 오류를 일으킨다.
- SYN 플러딩: 연결 요청만 대량으로 보내 대기 큐를 채운다.
- 웹 표준 기구인 W3C(World Wide Web Consortium)에서 제정했다.
- HTML의 브라우저 간 비호환 문제와, 기능은 풍부하지만 지나치게 복잡한 SGML의 한계를 함께 해소하려고 나왔다.
- 사용자가 필요한 태그를 직접 정의해 쓸 수 있는 다목적 마크업 언어이다.
- grade가 2이므로 case 2부터 시작: pt = 4 + 6 = 10
- break가 없어 case 3으로 넘어감: pt = 10 × 2 = 20
- case 3 끝의 break로 switch를 빠져나가 case 4와 default는 실행되지 않는다.
- 처리량(Throughput) — 일정 시간 동안 처리한 트랜잭션의 양이다.
- 응답 시간(Response Time) — 입력 완료부터 응답이 시작될 때까지의 시간이다.
- 경과 시간(Turnaround Time) — 요청 입력부터 결과 출력이 모두 끝날 때까지의 시간이다.
- 공통 모듈 구현은 기능을 나누고 추상화해 재사용성을 높이고 유지보수를 쉽게 하기 위한 공통 컴포넌트 구현 기법이다.
- 데이터베이스 접근 모듈, 인터페이스 모듈처럼 여러 곳에서 필요한 기능을 공통 모듈로 만든다.
- 좋은 공통 모듈은 모듈끼리의 ( ① )은/는 낮추고, 모듈 내부의 ( ② )은/는 높이도록 구현한다.
- 결합도(Coupling): 모듈과 모듈 사이의 의존 정도로, 낮아야 한 모듈을 고쳐도 다른 모듈로 번지지 않는다.
- 응집도(Cohesion): 한 모듈 안 구성요소가 하나의 기능을 위해 뭉친 정도로, 높아야 이해와 재사용이 쉽다.
- 데이터 링크 계층: 프레임
- 네트워크 계층: 패킷
- 전송 계층: 세그먼트
- 총 예상 라인 수: 30,000라인
- 참여 개발자: 5명
- 개발자 1인의 월평균 생산성: 300라인
- 중복 — 자주 조인하는 컬럼을 다른 테이블에 중복 저장하거나 합계 같은 파생 컬럼을 추가한다.
- 통합 — 늘 함께 조회되는 테이블을 하나로 합쳐 조인을 줄인다.
- 분리 — 큰 테이블을 수평·수직으로 분할해 필요한 부분만 읽게 한다.
- 릴리스 노트(문서)의 이름
- 제품 이름과 버전 번호
- 릴리스 날짜, 참고 날짜, 노트 버전
- 1회전에서는 가장 작은 5가 맨 뒤로 밀려나 42 88 17 63 29 5가 된다.
- 2회전에서는 17이 뒤에서 둘째 칸으로 가서 88 42 63 29 17 5가 된다.
- 3회전에서는 42와 63이 자리를 바꿔 88 63 42 29 17 5가 된다.
- 4회전에서는 교환이 없어 swapped가 0으로 남고, break로 반복을 끝낸다.
- 이름과 값의 쌍(Attribute-Value Pair)으로 구성된 데이터 객체를 주고받기 위한 개방형 표준 형식이다.
- 특정 프로그래밍 언어에 묶이지 않아 여러 언어에서 읽고 쓸 수 있다.
- Ajax(Asynchronous JavaScript and XML) 통신에서 널리 쓰이며, XML을 대신하는 대표적인 데이터 형식이다.
- 원자성(Atomicity): 트랜잭션의 연산은 모두 반영되거나 하나도 반영되지 않아야 한다(All or Nothing).
- 격리성(Isolation): 실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 볼 수 없다(고립성이라고도 함).
- 구문(Syntax): 데이터 형식, 부호화 방법, 신호 레벨을 정한다.
- 의미(Semantics): 제어 정보와 오류 처리 등 각 필드가 무엇을 뜻하는지 정한다.
- 타이밍(Timing): 송수신 속도를 맞추고 메시지를 보내는 순서를 정한다.
20-1
아래 Java 프로그램의 실행 결과를 적으시오.
public class Main {
public static void main(String[] args) {
int[] v = {3, 6, 9, 12};
for (int k = v.length - 1; k >= 0; k--) {
System.out.print(v[k] / 3 + " ");
}
}
}4 3 2 1
[해설]
반복문은 마지막 인덱스(v.length − 1 = 3)에서 0까지 거꾸로 돌며 각 원소를 3으로 나눈 몫을 찍는다.
출력은 4 3 2 1이다. v[k] / 3이 먼저 계산된 뒤 문자열 " "과 이어진다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
다음 설명에 해당하는 해시 함수의 이름을 적으시오.
MD5
[해설]
MD4를 대체한 128비트 해시 함수는 MD5(Message-Digest algorithm 5)이며, RFC 1321에 규정되어 있다.
입력 길이와 관계없이 항상 128비트(16진수 32자리) 값을 낸다. 그래서 내려받은 파일의 해시값을 배포처에서 공개한 값과 비교해 변조 여부를 확인하는 데 쓴다.
혼동 주의: MD5는 충돌 공격이 알려져 있어서 보안 용도로는 SHA-256 같은 SHA-2 계열을 권장한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
다음은 어떤 프로그램의 모듈 호출 관계를 정리한 표이다. 각 상위 모듈은 오른쪽 칸의 하위 모듈을 호출한다. 팬인(Fan-In)이 2 이상인 모듈을 모두 적으시오.
| 상위 모듈 | 호출하는 하위 모듈 |
|---|---|
| A | B, C, D |
| B | E, F |
| C | F, G |
| D | J |
| E | H |
| F | H |
| G | I |
F, H
[해설]
팬인은 어떤 모듈을 호출하는 상위 모듈의 수다. 하위 모듈 칸에 두 번 이상 등장하는 모듈을 찾으면 된다.
정답은 F, H다. 반대로 팬아웃은 한 모듈이 호출하는 하위 모듈 수로, A의 팬아웃이 3으로 가장 크다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
다음 설명에 해당하는 서비스 거부(DoS) 공격 기법을 적으시오.
랜드 어택(Land Attack)
[해설]
출발지와 목적지 주소를 같게 위조하는 공격은 랜드 어택(Land Attack)이다.
대상은 스스로에게 응답을 계속 보내며 자원을 소모한다. 방화벽·라우터에서 출발지와 목적지가 같은 패킷을 차단하면 막을 수 있다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
아래 특징을 모두 가진 언어의 이름을 적으시오.
XML
[해설]
사용자가 태그를 직접 정의해 쓰는 W3C 표준 마크업 언어는 XML(eXtensible Markup Language)이다.
복잡한 SGML에서 핵심 기능만 추려 단순하게 만들었다. 태그가 고정된 HTML과 달리 확장(eXtensible)할 수 있어서 데이터 교환과 문서 구조 표현에 널리 쓰인다.
혼동 주의: HTML은 화면에 보여 주는 데 초점을 두고, XML은 데이터의 구조와 의미를 기술하는 데 초점을 둔다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
아래 Java 프로그램이 출력하는 값을 적으시오.
public class Main {
public static void main(String[] args) {
int grade = 2;
int pt = 4;
switch (grade) {
case 0:
pt = 100;
case 1:
case 2:
pt += 6;
case 3:
pt *= 2;
break;
case 4:
pt -= 7;
default:
pt = 0;
}
System.out.print(pt);
}
}20
[해설]
switch는 일치하는 case부터 실행을 시작해 break를 만날 때까지 아래 case로 계속 내려간다(fall-through).
출력은 20이다. 시작점 위쪽의 case 0(pt = 100)은 실행되지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
애플리케이션 성능을 측정하는 지표를 정리한 표이다. 빈칸 ①~③에 알맞은 지표를 적으시오.
| 지표 | 설명 |
|---|---|
| ( ① ) | 일정 시간 안에 애플리케이션이 처리해 낼 수 있는 트랜잭션의 양. 웹 애플리케이션이라면 시간당 처리 페이지 수로 나타낸다. |
| ( ② ) | 사용자가 입력을 마친 순간부터 애플리케이션이 응답을 내보내기 시작할 때까지 걸리는 시간. 예) 메뉴를 누른 뒤 그 화면이 뜨기 시작할 때까지의 시간 |
| ( ③ ) | 사용자가 요청을 입력한 시점부터 트랜잭션 처리를 거쳐 결과 출력이 모두 끝날 때까지 걸리는 시간 |
| 자원 사용률 | 트랜잭션을 처리하는 동안 소모되는 CPU·메모리·네트워크 사용량 |
① 처리량(Throughput)
② 응답 시간(Response Time)
③ 경과 시간(Turnaround Time)
[해설]
애플리케이션 성능은 처리량·응답 시간·경과 시간·자원 사용률 네 지표로 측정한다.
혼동 주의: 응답 시간은 출력이 시작될 때, 경과 시간은 출력이 완료될 때까지 잰다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
소프트웨어 테스트의 기본 원리 가운데 하나인 살충제 패러독스(Pesticide Paradox)가 무엇을 뜻하는지 간단히 서술하시오.
같은 테스트 케이스로 테스트를 되풀이하면 더 이상 새로운 결함을 찾아내지 못하게 된다는 원리
[해설]
살충제 패러독스는 소프트웨어 테스트 원리의 하나로, 같은 살충제에 내성이 생긴 벌레만 살아남는 현상에서 이름을 따왔다.
동일한 테스트 케이스를 되풀이하면 그 케이스가 잡을 결함은 이미 고쳐져 있어 새로운 결함을 찾지 못한다. 그래서 테스트 케이스를 주기적으로 검토하고 새 입력과 경로를 더해 보완해야 한다.
혼동 주의: 결함 집중은 결함이 소수 모듈에 몰린다는 원리이고, 오류-부재의 궤변은 결함이 없어도 요구사항을 못 맞추면 소용없다는 원리다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
공통 모듈 구현에 관한 설명이다. 빈칸 ①, ②에 알맞은 용어를 적으시오.
① 결합도(Coupling)
② 응집도(Cohesion)
[해설]
공통 모듈 설계의 원칙은 결합도는 낮게, 응집도는 높게다.
외우는 요령: 결합은 모듈 '사이', 응집은 모듈 '안'을 본다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
OSI 7계층 가운데 전기적·기계적 특성을 이용해 비트(Bit) 단위로 데이터를 전송 매체에 실어 보내는 계층을 적으시오.
물리 계층(Physical Layer)
[해설]
비트 스트림을 전기·광 신호로 바꿔 전송하는 계층은 1계층인 물리 계층(Physical Layer)이다.
케이블, 커넥터, 전압 수준, 전송 속도 등 하드웨어적 규격을 정한다. 리피터와 허브가 이 계층 장비다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
[학생] 테이블에 전자과 70명, 경영과 80명, 디자인과 40명의 정보가 한 명당 한 행씩 저장되어 있다. 아래 세 SQL 문 ①~③을 각각 실행했을 때 결과로 나오는 튜플(행)의 수를 적으시오. (단, 학과 열에는 학생의 학과명이 들어 있다.)
① SELECT 학과 FROM 학생;
② SELECT DISTINCT 학과 FROM 학생;
③ SELECT COUNT(DISTINCT 학과) FROM 학생 WHERE 학과 = '경영과';① 190
② 3
③ 1
[해설]
①은 조건 없이 학과 열만 뽑으므로 전체 행 수 70 + 80 + 40 = 190개가 나온다. 중복된 학과명도 그대로 나열된다.
②는 DISTINCT로 중복을 제거하므로 전자과·경영과·디자인과 3개 행만 남는다.
③은 집계 함수 COUNT의 결과 한 줄만 돌려주므로 튜플 수는 1이다. 그 값 역시 경영과 하나뿐이라 1이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
데이터 마이닝(Data Mining)이 무엇인지 그 개념을 간단히 서술하시오.
대량으로 축적된 데이터 속에서 통계적 규칙이나 패턴을 체계적·자동적으로 찾아내는 기술
[해설]
데이터 마이닝(Data Mining)은 대량으로 쌓인 데이터에서 겉으로 드러나지 않은 규칙·패턴을 찾아내는 기술이다.
'체계적·자동적'이란 사람이 데이터를 일일이 보지 않고 통계·기계학습 알고리즘으로 찾아낸다는 뜻이다. 광산에서 광물을 캐듯 데이터 더미에서 쓸모 있는 지식을 캐낸다는 비유에서 이름이 붙었다.
대표 기법은 연관 규칙(장바구니 분석)·분류·군집·연속 패턴이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
어떤 프로젝트의 규모를 LoC(Line of Code) 기법으로 추정하였다. 조건이 아래와 같을 때 (1) 개발 기간과 (2) 그 계산식을 적으시오.
(1) 20개월
(2) (30,000 ÷ 300) ÷ 5 = 20
[해설]
LoC 기법에서는 예상 라인 수를 1인 월평균 생산성으로 나눠 노력(인월, MM)을 구한다. 이 노력을 투입 인원으로 나누면 개발 기간이 나온다.
노력 = 총 라인 수 ÷ 1인 월평균 생산성
= 30,000 ÷ 300 = 100 MM
개발 기간 = 노력 ÷ 투입 인원
= 100 ÷ 5 = 20개월
5명이 한 달에 합쳐서 1,500라인을 만든다고 보고 30,000 ÷ 1,500으로 풀어도 같은 답이 나온다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
데이터 모델링 기법 중 반정규화라고도 부르는 비정규화(De-Normalization)가 어떤 작업을 말하는지 간략히 설명하시오.
정규화된 엔티티·속성·관계를 성능 향상과 개발·운영의 단순화를 위해 중복·통합·분리하는 데이터 모델링 기법
[해설]
비정규화(반정규화)는 정규화로 잘게 나뉜 엔티티·속성·관계를 성능 향상과 개발·운영 단순화를 위해 일부러 되돌리는 데이터 모델링 기법이다.
조회는 빨라지지만 중복 데이터 때문에 이상 현상과 일관성 관리 부담이 생기는 맞교환 관계다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
제품 패키지의 릴리스 노트를 작성할 때, 다음 정보를 담는 항목의 이름을 적으시오.
헤더(Header)
[해설]
릴리스 노트의 첫 항목인 헤더(Header)에는 문서 이름, 제품 이름·버전, 릴리스 날짜, 노트 버전 같은 식별 정보를 적는다.
헤더가 있어야 여러 릴리스 노트 가운데 어느 제품의 어느 버전 문서인지 바로 구별할 수 있다.
혼동 주의: 제품과 이번 변경을 간략히 소개하는 항목은 헤더가 아니라 개요다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
아래 C 프로그램을 실행했을 때 출력되는 결과를 적으시오.
#include <stdio.h>
int main(void) {
int s[6] = {42, 17, 88, 5, 63, 29};
int n = 6, t, swapped;
for (int pass = 1; pass < n; pass++) {
swapped = 0;
for (int j = 0; j < n - pass; j++) {
if (s[j] < s[j + 1]) {
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
swapped = 1;
}
}
if (!swapped)
break;
}
for (int j = 0; j < n; j++)
printf("%d ", s[j]);
return 0;
}88 63 42 29 17 5
[해설]
인접한 두 값을 비교해 앞의 값이 더 작으면 교환하는 버블 정렬이다. 조건이 s[j] < s[j + 1]이므로 내림차순으로 정렬된다.
출력은 88 63 42 29 17 5이며, 값마다 뒤에 공백이 하나씩 붙는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
다음 설명에 해당하는 데이터 표현 형식의 이름을 적으시오.
JSON
[해설]
속성-값 쌍(Attribute-Value Pair)으로 데이터 객체를 주고받는 개방형 표준 형식은 JSON(JavaScript Object Notation)이다.
{"name": "kim", "age": 20}처럼 중괄호 안에서 키와 값을 콜론으로 잇는다.
이름에 JavaScript가 들어가지만 언어 독립적이어서 Java·Python 등 대부분의 언어가 읽고 쓸 수 있다. 태그를 여닫는 XML에 비해 간결하고 가벼워 Ajax 통신에서 XML 대신 널리 쓰인다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
비선점 CPU 스케줄링 가운데 HRN(Highest Response ratio Next) 기법은 대기 중인 작업마다 우선순위 값을 계산해 가장 큰 것부터 실행한다. 이 우선순위 값의 계산식을 적으시오.
[해설]
HRN은 SJF에서 긴 작업이 계속 밀리는 기아 현상을 보완한 비선점 스케줄링이다. 분자에 대기 시간을 넣어 오래 기다린 작업일수록 우선순위가 올라간다.
우선순위 = (대기 시간 + 서비스 시간) ÷ 서비스 시간
예: 대기 10, 서비스 5 → (10 + 5) ÷ 5
= 3
값이 클수록 먼저 실행된다. 서비스 시간이 짧을수록, 대기 시간이 길수록 값이 커진다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
트랜잭션이 갖추어야 할 ACID 특성 가운데 일관성(Consistency)과 지속성(Durability)을 뺀 나머지 두 가지를 적으시오.
① 원자성(Atomicity)
② 격리성(Isolation)
[해설]
트랜잭션의 4대 특성인 ACID에서 일관성과 지속성을 빼면 원자성과 격리성이 남는다.
외우는 요령: 머리글자 A·C·I·D 순서대로 원자성·일관성·격리성·지속성이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
20-1
통신 프로토콜을 이루는 기본 요소 세 가지를 적으시오.
① 구문(Syntax)
② 의미(Semantics)
③ 타이밍(Timing)
[해설]
통신 프로토콜의 기본 요소는 구문, 의미, 타이밍 세 가지다.
외우는 요령: 어떻게 생겼나(형식), 무엇을 뜻하나(의미), 언제 보내나(때)로 묶어 기억한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
2020년 정보처리기사실기 1회차 시험지 PDF 다운로드·인쇄 →
전 회차를 한 권으로 — 정보처리기사 실기 기출문제 PDF 전자책(문제집·정답해설집) →
2020년 정보처리기사실기 1회차 정답과 해설은 무료인가요?
이 페이지의 20문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.
이 회차를 CBT 로 직접 풀어볼 수 있나요?
정보처리기사 실기 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 정보처리기사 실기 기출문제 풀러 가기 →
시험지 PDF 나 전자책으로도 볼 수 있나요?
이 회차의 인쇄용 시험지 PDF 와, 전 회차를 문제집·정답해설집으로 묶은 PDF 전자책을 제공합니다. 정보처리기사 실기 기출문제 PDF 전자책 보기 →