2024년 정보처리기사실기 1회차 기출문제 정답·해설 페이지
- ( ㉮ )는 대규모 TCP/IP 망에서 쓰이는 내부 라우팅 프로토콜로, 각 라우터가 링크 상태(Link State) 정보를 모아 자신을 출발점으로 한 최단 경로 트리를 계산한다.
- ( ㉮ )는 경로 계산에 다익스트라(Dijkstra) 알고리즘을 쓰며, 망을 영역(Area)으로 나누고 변화가 생겼을 때만 그 영역의 라우터들에게 갱신 정보를 알린다.
- Apple → l, Mango → g, Kiwi → w
- Lemon → o, Grape → p, Peach → c
- 특정 조직이나 기관을 표적으로 정해 두고, 여러 수단을 동원해 오랜 기간 은밀하고 끈질기게 수행하는 맞춤형 공격이다.
- 일반적으로 침투 → 검색 → 수집 → 유출의 네 단계를 거쳐 진행된다.
- MITM: 통신 중간에 끼어들어 가로채거나 변조
- Replay Attack: 가로챈 인증 데이터를 다시 보내 재사용
- XDR: 공격 기법이 아니라 여러 보안 계층을 통합한 탐지·대응 솔루션
- 원래: K L M N O P Q (길이 7)
- 뒤집은 뒤: Q P O N M L K
- i = 0, 3, 6 → text[0]=Q, text[3]=N, text[6]=K
- ( ① ): 두 릴레이션의 속성값을 =, <, > 등 임의의 비교 연산자로 비교해, 조건을 만족하는 튜플을 결합한다.
- ( ② ): ( ① ) 가운데 비교 연산자가 = 인 경우로, 두 속성값이 같은 튜플끼리만 결합한다. 결과에 조인 속성이 두 번 나타난다.
- ( ③ ): ( ② )의 결과에서 중복으로 나타나는 조인 속성 하나를 없앤 조인이다.
- ( ④ ): 양쪽 테이블에서 조인 조건이 일치하는 행만 결과에 남긴다.
- ( ⑤ ): FROM 절 뒤쪽(오른쪽) 테이블의 행은 모두 남기고, 앞쪽(왼쪽) 테이블은 일치하는 행만 붙인다. 짝이 없으면 NULL로 채운다.
- ( ⑥ ): 조건 없이 한쪽의 모든 행과 다른 쪽의 모든 행을 짝지은 곱집합을 만든다.
- PID 11: 11 < 40이고 500 < 600 → 참
- PID 22, 33: 가격이 600 이상 → 거짓
- PID 44: 앞 조건은 거짓이지만 PID = 44 → 참
- ㄱ. 교환적(통신적) 응집도(Communicational Cohesion)
- ㄴ. 기능적 응집도(Functional Cohesion)
- ㄷ. 시간적 응집도(Temporal Cohesion)
- ㄹ. 우연적 응집도(Coincidental Cohesion)
- 순차적: 한 요소의 출력이 다음 요소의 입력으로 이어짐
- 절차적: 정해진 수행 순서에 따라 묶였을 뿐 데이터는 공유하지 않음
- 논리적: 비슷한 성격의 처리를 한 모듈에 모아 두고 플래그로 골라 실행
- 결정문 안의 각 개별 조건이, 다른 조건의 값과 상관없이 홀로 결정의 결과(참/거짓)를 바꿀 수 있음을 보이도록 테스트 케이스를 설계한다.
- 조건 커버리지: 각 개별 조건이 참·거짓을 한 번씩 가지면 충족
- 조건/결정 커버리지: 개별 조건과 전체 결정이 모두 참·거짓을 한 번씩 가지면 충족
- 다중 조건 커버리지: 개별 조건의 모든 참·거짓 조합을 시험
- K=10 (N=u), K=30 (N=u), K=50 (N=w): 포함
- K=20 (N=v): Q=2라 제외
- K=40 (N=t): [Y]에 없는 값이라 제외
- 대역: 129.200.8.0 ~ 129.200.11.255
- 129.200.6.247, 129.200.7.248은 129.200.4.0/22 대역이라 제외
- 129.200.8.249만 범위 안에 있다
- Z: 25 + 4 = 29, 29 % 26 = 3 → D
- i → p, p: 15 + 7 = 22 → w
- 공백은 그대로
- 4: 4 + 6 = 10 % 10 = 0 → 0, 7: 13 % 10 = 3 → 3
- 구체적인 클래스를 직접 지정하지 않고도, 서로 관련되거나 함께 쓰여야 하는 객체들의 묶음(제품군)을 생성하는 인터페이스를 제공한다. 키트(Kit)라고도 부른다.
- 클라이언트는 이 패턴이 제공하는 인터페이스(API)만 사용하고, 실제 객체의 구현은 구체 제품(Concrete Product) 클래스가 담당한다.
- x.add(2) → total = 2
- y.add(5) → total = 7
- x.add(1) → total = 8
- z.add(3) → total = 11
- 공격자가 시스템에 침투한 뒤 관리자 권한을 유지하고, 백도어·원격 접속 등을 제공하며, 로그 등 사용 흔적을 지우는 기능을 한데 묶은 프로그램 모음이다.
- 운영체제의 핵심부인 커널 수준에 숨어 동작하는 경우가 많아, 사용자가 침해 사실을 알아차리기 어렵고 탐지와 분석도 까다롭다.
- LRU: 4 참조 시 가장 오래 안 쓴 3을 교체, 5 참조 시 4를 교체, 7 참조 시 1을 교체
- LFU: 4 참조 시 참조 1회인 3을 교체, 5 참조 시 1회인 4를 교체, 7 참조 시 1회인 5를 교체
24-1
아래 Java 프로그램이 실행될 때, 실제로 수행되는 생성자·메서드·문장을 수행 순서대로 번호로 적으시오. (단, 같은 번호를 두 번 쓰지 않으며 수행되지 않는 번호는 적지 않는다.)
class Unit {
int atk, def;
Unit(int atk, int def) { // ①
this.atk = atk;
this.def = def;
}
int power() { // ②
return atk * def + bonus();
}
int bonus() { // ③
return 0;
}
}
class Tank extends Unit {
int hp;
Tank(int hp) { // ④
super(hp - 1, hp);
}
int power(int boost) { // ⑤
return hp * boost;
}
int bonus() { // ⑥
return atk % 3;
}
}
public class Main {
public static void main(String[] args) { // ⑦
Unit u = new Tank(5); // ⑧
System.out.println(u.power()); // ⑨
}
}⑦ → ⑧ → ④ → ① → ⑨ → ② → ⑥
[해설]
main(⑦)에서 new Tank(5)(⑧)를 만나면 Tank 생성자(④)가 호출되고, 그 첫 줄의 super가 부모 생성자 Unit(①)을 먼저 실행한다. atk = 4, def = 5가 된다.
⑨에서 u.power()를 부르면 Tank에는 인자 없는 power()가 없으므로 Unit.power()(②)가 실행된다. Tank의 power(int)(⑤)는 매개변수가 다른 오버로딩이라 호출되지 않는다.
power() 안의 bonus()는 Tank가 오버라이딩했으므로 Tank.bonus()(⑥)가 실행되고 Unit.bonus()(③)는 건너뛴다. 출력값은 4 × 5 + 4 % 3 = 21이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
빈칸 ( ㉮ )에 공통으로 들어갈 라우팅 프로토콜을 적으시오.
OSPF
[해설]
링크 상태 방식과 다익스트라 알고리즘, 영역(Area) 구분을 쓰는 것은 OSPF(Open Shortest Path First)다.
주기적으로 전체 테이블을 보내는 거리 벡터 방식의 RIP와 달리, 변화가 있을 때만 갱신을 보내 수렴이 빠르고 홉 수 제한도 없다.
OSPF는 자율 시스템 안에서 쓰는 IGP다. 자율 시스템 사이의 경로 교환은 BGP가 맡는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 Python 프로그램을 실행한 결과를 적으시오.
fruits = ["Apple", "Mango", "Kiwi", "Lemon", "Grape", "Peach"]
out = "F"
for f in fruits:
out += f[-2]
print(out)Flgwopc
[해설]
f[-2]는 문자열의 뒤에서 두 번째 문자다. 시작값 "F" 뒤에 각 단어의 해당 문자를 차례로 붙인다.
결과는 Flgwopc다. 음수 인덱스 -1이 마지막 문자라는 점만 기억하면 된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
다음 설명에 해당하는 공격 기법을 [보기]에서 골라 적으시오.
[보기] APT, HeartBleed, Key Logger, MITM, NAT, Replay Attack, Smishing, Watering Hole, XDR, 사회공학 기법
APT
[해설]
표적을 정해 장기간 지속적으로 공격하는 것은 APT(Advanced Persistent Threat, 지능형 지속 공격)다.
APT는 침투 단계에서 사회공학이나 워터링 홀 같은 기법을 수단으로 쓰기도 한다. 이들은 APT를 이루는 한 단계일 뿐 공격 전체를 가리키는 말은 아니다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 C 프로그램의 출력 결과를 적으시오.
#include <stdio.h>
#include <string.h>
void flip(char *lo, char *hi) {
char tmp;
while (lo < hi) {
tmp = *lo;
*lo++ = *hi;
*hi-- = tmp;
}
}
int main(void) {
char text[20] = "KLMNOPQ";
int n = strlen(text);
flip(text, text + n - 1);
for (int i = 0; i < n; i += 3)
printf("%c", text[i]);
printf("\n");
return 0;
}QNK
[해설]
flip은 양 끝을 가리키는 두 포인터를 안쪽으로 좁혀 가며 문자를 맞바꾼다. lo가 hi보다 앞에 있는 동안만 교환하므로 문자열이 제자리에서 뒤집힌다.
출력은 QNK다. 길이가 홀수라 가운데 문자 N은 자기 자신과 바뀌지 않고 제자리에 남는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
두 릴레이션을 결합하는 조인에 관한 물음에 답하시오.
(1) 관계 대수의 조인에 관한 설명이다. 빈칸 ①~③에 알맞은 조인의 이름을 적으시오.
(2) SQL의 조인에 관한 설명이다. 빈칸 ④~⑥에 알맞은 조인을 SQL 키워드로 적으시오.
① 세타 조인(Theta Join)
② 동등 조인(Equi Join)
③ 자연 조인(Natural Join)
④ INNER JOIN
⑤ RIGHT OUTER JOIN
⑥ CROSS JOIN
[해설]
비교 연산자 전반을 허용하는 것은 세타 조인, 그중 = 만 쓰는 것은 동등 조인, 동등 조인에서 중복 조인 속성을 하나로 줄인 것이 자연 조인이다.
SQL에서 일치하는 행만 남기면 INNER JOIN, 오른쪽 테이블을 모두 보존하면 RIGHT OUTER JOIN이다.
CROSS JOIN은 조건 없이 모든 행을 조합하므로 결과 행 수가 두 테이블 행 수의 곱이 된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
테이블 [ITEM]이 아래와 같을 때, 주어진 SQL 문의 실행 결과를 적으시오.
| PID | PRICE |
|---|---|
| 11 | 500 |
| 22 | 2500 |
| 33 | 1800 |
| 44 | 900 |
SELECT COUNT(*)
FROM ITEM
WHERE PID < 40 AND PRICE < 600 OR PID = 44;2
[해설]
WHERE 절에서는 AND가 OR보다 먼저 계산된다. 조건은 (PID < 40 AND PRICE < 600) OR PID = 44로 묶인다.
조건을 만족하는 행은 2개이므로 COUNT(*)는 2다. OR을 먼저 묶으면 1이 나오는 함정이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
모듈 내부 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내는 응집도(Cohesion)에 관한 물음에 답하시오.
(1) 위 네 유형을 응집도가 가장 강한(좋은) 것부터 가장 약한(나쁜) 것까지 차례로 기호로 나열하시오.
(2) 응집도 유형은 모두 일곱 가지로, (1)에서 나열한 인접한 두 유형 사이마다 위 목록에 없는 유형이 하나씩 들어간다. 강한 쪽부터 차례로 ①, ②, ③에 해당하는 유형의 이름을 적으시오.
(1) ㄴ → ㄱ → ㄷ → ㄹ
(2) ① 순차적 응집도(Sequential Cohesion)
② 절차적 응집도(Procedural Cohesion)
③ 논리적 응집도(Logical Cohesion)
[해설]
응집도는 강한 순으로 기능적 → 순차적 → 교환적 → 절차적 → 시간적 → 논리적 → 우연적이다.
보기의 네 유형은 기능적(ㄴ), 교환적(ㄱ), 시간적(ㄷ), 우연적(ㄹ) 순이고, 그 사이에 순차적, 절차적, 논리적이 차례로 끼어든다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 C 프로그램의 출력 결과를 적으시오.
#include <stdio.h>
typedef struct {
int id;
double amt;
} Wallet;
double grow(double base, int n) {
double r = 1.0;
while (n-- > 0)
r *= base;
return r;
}
void setup(Wallet *w, int id, double amt) {
w->id = id;
w->amt = amt;
}
void adjust(Wallet *w, double v) {
if (v > 0 && v < w->amt)
w->amt -= v;
else
w->amt += v;
}
void interest(Wallet *w) {
w->amt *= grow(1.25, 2);
}
int main(void) {
Wallet my;
setup(&my, 4027, 1500.0);
adjust(&my, 2000.0);
interest(&my);
printf("%d / %.2f", my.id, my.amt);
return 0;
}4027 / 5468.75
[해설]
setup 후 my는 id = 4027, amt = 1500.0이다. adjust에 넘긴 2000.0은 잔액보다 커서 조건이 거짓이므로 else로 가 amt = 1500.0 + 2000.0 = 3500.0이 된다.
interest는 grow(1.25, 2)로 1.252 = 1.5625를 구해 곱한다.
%.2f로 소수 둘째 자리까지 찍으므로 출력은 4027 / 5468.75다. 구조체를 포인터로 넘겼기 때문에 함수 안의 변경이 main의 my에 그대로 반영된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
다음 설명에 해당하는 테스트 커버리지를 [보기]에서 골라 적으시오.
[보기] 결정 커버리지, 구문 커버리지, 기본 경로 커버리지, 다중 조건 커버리지, 데이터 흐름 테스트, 루프 테스트, 변형 조건/결정 커버리지, 분기 커버리지, 제어 흐름 테스트, 조건 커버리지, 조건/결정 커버리지
변형 조건/결정 커버리지(MC/DC)
[해설]
각 개별 조건이 결과에 독립적으로 영향을 준다는 것을 보이는 기준은 MC/DC(Modified Condition/Decision Coverage, 변형 조건/결정 커버리지)다.
MC/DC는 모든 조합을 다 돌리는 다중 조건 커버리지보다 케이스 수가 적으면서도 조건 하나하나의 영향을 확인할 수 있다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
테이블 [X]와 [Y]가 아래와 같을 때, 주어진 SQL 문의 실행 결과를 적으시오.
[X]
| K | M | N |
|---|---|---|
| 10 | p | u |
| 20 | q | v |
| 30 | r | u |
| 40 | s | t |
| 50 | t | w |
[Y]
| N | P | Q |
|---|---|---|
| u | m | 7 |
| v | n | 2 |
| w | m | 9 |
SELECT M
FROM X
WHERE N IN (SELECT N FROM Y WHERE Q > 5);| M |
|---|
| p |
| r |
| t |
[해설]
안쪽 서브쿼리가 먼저 Q가 5보다 큰 [Y]의 N 값을 모은다. Q = 7인 u와 Q = 9인 w가 해당하므로 결과 집합은 {u, w}다.
남은 행의 M을 출력하면 p, r, t 세 행이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
라우터 두 대로 세 개의 네트워크를 이은 구성이 아래 표와 같다. 각 라우터 인터페이스에는 그 인터페이스가 연결된 네트워크 대역의 주소를 할당해야 한다. ②, ④, ⑥에 알맞은 IP 주소를 [보기]에서 하나씩 고르시오.
| 구간 | 연결 | 네트워크 대역 |
|---|---|---|
| A | 호스트 ① ― ② 라우터1 | 192.168.35.x/24 |
| B | 라우터1 ― ④ ― 라우터2 (두 라우터 사이의 링크) | 129.200.10.x/22 |
| C | 라우터2 ⑥ ― 호스트 ⑤ | 192.168.36.x/24 |
[보기] 129.200.6.247, 129.200.7.248, 129.200.8.249, 192.168.33.28, 192.168.34.34, 192.168.35.72, 192.168.36.249, 192.168.37.248, 192.168.38.247
② 192.168.35.72
④ 129.200.8.249
⑥ 192.168.36.249
[해설]
/24 대역은 앞 세 옥텟이 같아야 하므로 ②는 192.168.35.72, ⑥은 192.168.36.249다.
④가 속한 /22는 셋째 옥텟의 상위 6비트까지 네트워크 부분이다. 10 = 0000 1010이고 마스크 252 = 1111 1100과 AND 하면 8이 된다.
따라서 ④는 129.200.8.249다. 셋째 옥텟이 같지 않아도 /22 범위에만 들면 같은 네트워크다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 C 프로그램이 출력하는 문자열을 적으시오.
#include <stdio.h>
#include <ctype.h>
char rot(char c) {
if (isupper(c))
return (c - 'A' + 4) % 26 + 'A';
if (islower(c))
return (c - 'a' + 7) % 26 + 'a';
if (isdigit(c))
return (c - '0' + 6) % 10 + '0';
return c;
}
int main(void) {
const char *src = "Zip 47";
char dst[32];
int k = 0;
while (src[k] != '\0') {
dst[k] = rot(src[k]);
k++;
}
dst[k] = '\0';
printf("%s\n", dst);
return 0;
}Dpw 03
[해설]
rot는 문자 종류에 따라 서로 다른 칸 수만큼 순환 이동한다. 대문자는 4칸, 소문자는 7칸(각각 % 26), 숫자는 6칸(% 10)이고 그 밖의 문자는 그대로 둔다.
출력은 Dpw 03이다. 나머지 연산 덕분에 끝 문자(Z, 숫자 7)가 앞쪽으로 되돌아온다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 [수강신청] 릴레이션을 [학생튜터]와 [튜터과목] 두 릴레이션으로 분해하였다. [수강신청]에서 한 학생은 과목마다 튜터 한 명을 배정받고, 튜터 한 명은 한 과목만 맡는다. 분해하기 전 [수강신청] 릴레이션이 만족하는 가장 높은 정규형을 적으시오.
[수강신청]
| 학번 | 과목 | 튜터번호 |
|---|---|---|
| h11 | 파이썬 | T7 |
| h12 | 자바 | T8 |
| h13 | 파이썬 | T7 |
| h13 | 자바 | T5 |
| h14 | 파이썬 | T9 |
| h14 | 자바 | T5 |
[학생튜터]
| 학번 | 튜터번호 |
|---|---|
| h11 | T7 |
| h12 | T8 |
| h13 | T7 |
| h13 | T5 |
| h14 | T9 |
| h14 | T5 |
[튜터과목]
| 튜터번호 | 과목 |
|---|---|
| T5 | 자바 |
| T7 | 파이썬 |
| T8 | 자바 |
| T9 | 파이썬 |
제3정규형(3NF)
[해설]
[수강신청]에는 튜터번호 → 과목이라는 함수 종속이 있는데, 튜터번호는 후보키가 아니다. 결정자가 모두 후보키여야 하는 BCNF를 만족하지 못한다.
후보키는 (학번, 과목)과 (학번, 튜터번호)이고, 세 속성이 모두 어떤 후보키에 속한다. 그래서 이행 종속 문제가 생기지 않아 제3정규형(3NF)까지는 만족한다.
튜터번호를 결정자로 따로 떼어 낸 분해 결과 두 릴레이션은 BCNF가 된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 Java 프로그램을 실행하면 출력되는 값을 적으시오.
class Box {
int w, h;
Box(int w, int h) {
this.w = w;
this.h = h;
}
}
class Crate extends Box {
int d = 4;
Crate(int k) {
super(k * 2, k - 1);
d += h;
}
void show() {
System.out.println(w + d * 2);
}
}
public class Main {
public static void main(String[] args) {
Crate c = new Crate(6);
c.show();
}
}30
[해설]
new Crate(6)은 먼저 super(12, 5)로 부모 생성자를 실행해 w = 12, h = 5가 된다.
부모 생성자가 끝난 뒤 자식 필드 초기화 d = 4가 수행되고, 이어서 생성자 본문 d += h로 d = 9가 된다.
show()는 w + d × 2 = 12 + 18 = 30을 출력한다. 곱셈이 덧셈보다 먼저 계산된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
다음 설명에 해당하는 디자인 패턴을 [보기]에서 골라 적으시오.
[보기] Abstract Factory, Adapter, Bridge, Builder, Composite, Decorator, Facade, Factory Method, Flyweight, Prototype, Proxy, Singleton
Abstract Factory
[해설]
관련 객체들의 제품군을 구체 클래스와 무관하게 생성하는 생성 패턴은 Abstract Factory(추상 팩토리)다.
Factory Method는 객체 하나의 생성을 하위 클래스에 맡기는 반면, Abstract Factory는 여러 관련 객체를 한 벌(제품군)로 만든다. 예컨대 윈도용·맥용 버튼과 체크박스를 테마별로 함께 생성한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 Java 프로그램을 실행했을 때 출력되는 값을 적으시오.
class Ledger {
private static Ledger only = null;
private int total = 0;
private Ledger() {}
static Ledger open() {
if (only == null) {
only = new Ledger();
}
return only;
}
void add(int v) { total += v; }
int total() { return total; }
}
public class Main {
public static void main(String[] args) {
Ledger x = Ledger.open();
x.add(2);
Ledger y = Ledger.open();
y.add(5);
x.add(1);
Ledger z = Ledger.open();
z.add(3);
System.out.print(y.total());
}
}11
[해설]
생성자가 private이고 open()이 처음 한 번만 객체를 만들므로 이 클래스는 싱글톤(Singleton)이다. x, y, z는 모두 같은 객체를 가리킨다.
어느 참조로 호출하든 하나의 total이 누적되므로 y.total()은 11이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
다음 설명에 해당하는 해킹 도구를 적으시오.
루트킷(Rootkit)
[해설]
침입 후 권한 유지와 흔적 은닉을 위한 도구 모음은 루트킷(Rootkit)이다. 유닉스의 관리자 계정 root와 도구 모음 kit를 합친 말이다.
커널 루트킷은 프로세스 목록이나 파일 조회 결과 자체를 조작하므로, 감염된 시스템 안에서 실행한 점검 도구로는 잘 드러나지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
아래 C 프로그램이 출력하는 값을 적으시오.
#include <stdio.h>
int main(void) {
int p = 6, q = 2, r = 11;
if (p < q ? p : q - 2) {
q = q << 4;
} else {
r = r << 3;
}
printf("%d", q + r);
return 0;
}90
[해설]
if의 조건식은 삼항 연산자다. p < q(6 < 2)가 거짓이므로 q - 2 = 0이 선택되고, 0은 거짓이라 else 블록이 실행된다.
r = r << 3은 11을 왼쪽으로 3비트 이동하므로 11 × 23 = 88이 된다. q는 그대로 2다.
출력은 2 + 88 = 90이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
24-1
프레임 3개로 이루어진 주기억장치가 처음에 비어 있다. 아래 순서로 페이지가 참조될 때 물음에 답하시오.
| 참조 순번 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 페이지 | 1 | 2 | 3 | 1 | 2 | 4 | 1 | 2 | 5 | 7 |
(1) LRU(Least Recently Used) 교체 기법을 쓸 때 페이지 부재(Page Fault) 횟수를 적으시오.
(2) LFU(Least Frequently Used) 교체 기법을 쓸 때 페이지 부재 횟수를 적으시오.
(1) 6
(2) 6
[해설]
1, 2, 3은 빈 프레임을 채우며 부재 3회, 이어지는 1, 2는 적중이다. 두 기법의 차이는 교체 대상을 고르는 기준뿐이다.
두 경우 모두 부재는 1, 2, 3, 4, 5, 7에서 일어나 LRU 6회, LFU 6회다. 두 번째·세 번째 참조되는 1과 2는 끝까지 교체되지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
2024년 정보처리기사실기 1회차 시험지 PDF 다운로드·인쇄 →
전 회차를 한 권으로 — 정보처리기사 실기 기출문제 PDF 전자책(문제집·정답해설집) →
2024년 정보처리기사실기 1회차 정답과 해설은 무료인가요?
이 페이지의 20문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.
이 회차를 CBT 로 직접 풀어볼 수 있나요?
정보처리기사 실기 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 정보처리기사 실기 기출문제 풀러 가기 →
시험지 PDF 나 전자책으로도 볼 수 있나요?
이 회차의 인쇄용 시험지 PDF 와, 전 회차를 문제집·정답해설집으로 묶은 PDF 전자책을 제공합니다. 정보처리기사 실기 기출문제 PDF 전자책 보기 →