출처 : https://chobopark.tistory.com/483#google_vignette
[2024년 2회] 정보처리기사 실기 복원 문제
안녕하세요. 2024년 2회 정보처리기사 실기 기출문제를 정리해보았습니다.해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.정보처리기사 개편안인 2020년 시험부터 기출문제
chobopark.tistory.com
1. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
class Main {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4};
int[] b = new int[]{1, 2, 3, 4};
int[] c = new int[]{1, 2, 3};
check(a, b);
check(a, c);
check(b, c);
}
public static void check(int[] a, int[] b) {
if (a==b) {
System.out.print("O");
}else{
System.out.print("N");
}
}
}
정답 : NNN
풀이 :
==은 주소값을 비교하는 연산자이다.
a, b, c는 모두 new int[]로 새로 생성된 객체들이므로
가리키는 주소가 모두 다르다
2. 다음 문제에서 설명하는 용어를 작성하시오.
데이터를 중복시켜 성능을 향상시키기 위한 기법으로 데이터를 중복 저장하거나
테이블을 합치는 등으로 성능을 향상시키지만 데이터 무결성이 저하될 수 있는 기법
정답 : 반정규화
3. 다음은 SQL에 관한 문제이다. 아래 SQL 구문의 빈칸을 작성하시오.
[테이블]
사원 [사원번호(PK), 이름, 나이, 부서]
부서 [사원번호(PK), 이름, 주소, 나이]
신입 사원이 들어와서 사원 테이블에 추가
INSERT INTO 사원 (사원번호, 이름, 주소, 부서) [ ① ] (32431, '정실기', '서울', '영업');
위에 신입사원을 검색하면서 부서 테이블에 추가
INSERT INTO 부서 (사원번호, 이름, 나이, 부서)
[ ② ] 사원번호, 이름, 나이, 23 FROM 사원 WHERE 이름 = '정실기';
전체 사원 테이블 조회
SELECT * [ ③ ] 사원;
퇴사로 인해 부서에 해당하는 값을 '퇴사'로 변경
UPDATE 사원 [ ④ ] 부서 = '퇴사' WHERE 사원번호 = 32431;
정답 :
① - VALUES
② - SELECT
③ - FROM
④ - SET
4. 다음 릴레이션의 Cardinality와 Degree를 작성하시오.

Cardinality : ( ① )
Degree : ( ② )
정답 :
① - 5
② - 4
풀이 :
Cardinality = 튜플(행) 수
Degree = 속성(열) 수
5. 다음은 프로토콜에 대한 내용이다. 아래 내용을 읽고 알맞는 답을 작성하시오.
- Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.
- 기업에서 사설 인터넷망으로 사용할 수 있는 VPN을 구현하는데 사용되는 프로토콜이다.
- AH(Authentication Header)와 ESP(Encapsulating Security Payload)라는 두 가지 보안 프로토콜을 사용한다.
정답 : IPSec
6. 다음은 Python에 대한 문제이다. 아래 코드를 읽고 알맞는 출력 값을 작성하시오.
def fnCalculation(x,y):
result = 0;
for i in range(len(x)):
temp = x[i:i+len(y)]
if temp == y:
result += 1;
return result
a = "abdcabcabca"
p1 = "ab";
p2 = "ca";
out = f"ab{fnCalculation(a,p1)}ca{fnCalculation(a,p2)}"
print(out)
정답 : ab3ca3
풀이 :
fnCalculation(a, p1)
x = "abdcabcabca"
y = "ab"
x를 i부터 y길이만큼 잘라서 같으면 result +1
ab, bd, dc, ca, ab, bc, ca, ab, bc, ca → 3
fnCalculation(a, p2)
x = "abdcabcabca"
y = "ca"
x를 i부터 y길이만큼 잘라서 같으면 result +1
ab, bd, dc, ca, ab, bc, ca, ab, bc, ca → 3
out = f"ab3ca3"
7. 아래 설명하는 내용을 확인하여 알맞는 알고리즘을 작성하시오.
- 대칭키 알고리즘으로 1997년 NIST(미국 국립기술표준원)에서 DES를 대체하기 위해 생성되었다.
- 128비트, 192비트 또는 256비트의 가변 키 크기와 128비트의 고정 블록 크기를 사용한다.
- 높은 안전성과 효율성, 속도 등으로 인해 DES 대신 전 세계적으로 많이 사용되고 있다.
정답 : AES
8. 패킷 교환 방식 중에 연결형과 비연결형에 해당하는 방식을 작성하시오.
① 연결형 교환 방식
② 비연결형 교환 방식
정답 :
① - 가상회선
② - 데이터그램
9. 아래 내용을 확인하고 보기에서 알맞는 답을 고르시오.
실행 순서가 밀접한 관계를 갖는 기능을 모아 모듈로 구성한다.
한 모듈 내부의 한 기능 요소에 의한 출력 자료가 다음 기능 원소의 입력 자료로서 제공되는 형태이다.
[보기]
ㄱ. 기능적(functional) ㄴ. 우연적(Coincidental) ㄷ. 통신적(Communication) ㄹ. 절차적(Procedural) ㅁ. 시간적(Temporal) ㅂ. 순차적(sequential) ㅅ. 논리적(Logical)
정답 : ㅂ. 순차적
10. 아래는 디자인 패턴에 관한 설명이다. 아래 설명을 읽고 보기에서 알맞는 용어를 작성하시오.
- 컬렉션 객체의 내부 구조를 노출하지 않고 순차적으로 접근할 수 있게 하는 패턴이다.
- 이 패턴은 객체의 내부 표현 방식에 독립적으로 요소에 접근할 수 있도록 해준다
- 반복 프로세스를 캡슐화하여 클라이언트 코드에서는 컬렉션의 구체적인 구현에 종속되지 않도록 한다.
[보기]
| 생성패턴 | 구조패턴 | 행위패턴 |
| Singleton | Adapter | Iterator |
| Factory Method | Bridge | Visitor |
| Abstract Factory | Composite | Observer |
정답 : Iterator
풀이 :
Iterator : 컬렉션 내부 구조를 몰라도 순차적으로 접근 가능
Composite : 객체들을 트리 구조로 구성, 개별 객체와 집합 객체를 동일하게 다룸
Decorator : 객체에 동적으로 기능 추가
Factory : 객체 생성 코드 캡슐화 → 클라이언트는 생성 방식 몰라도됨
Singleton : 클래스의 인스턴스를 하나만 생성
Observer : 객체 상태 변화 시 다른 객체에 자동 통보
Strategy : 알고리즘을 캡슐화하여 런타임에 교체 가능
Adapter : 서로 호환되지 않는 인터페이스를 맞춰줌
Bridge : 추상화와 구현을 분리하여 독립적으로 확장 가능하게 만드는 패턴
11. 아래 그림을 바탕으로 RIP을 구성하여 최단 경로 비용을 계산하여 흐름에 맞게 작성하시오.

[예제]
A →
정답 : A → D → C → F
풀이 : RIP는 홉의 수만 따진다, 만약 OSPF라면 A → D → C → E → F
12. 아래의 표를 확인하여 SRT 스케줄링의 평균 대기시간을 계산하여 작성하시오.
| 프로세스 | 도착 시간 | 서비스 시간 |
| A | 0 | 8 |
| B | 1 | 4 |
| C | 2 | 9 |
| D | 3 | 5 |
정답 : 6.5
풀이 : SRT(Shortest Remaining Time)으로 남은 실행시간이 가장 짧은 프로세스가 먼저
| 시간 | 실행프로세스 | 대기 | 완료 |
| 0-1 | A | - | |
| 1-5 | B | A(7), C(9), D(5) | B(5) |
| 5-10 | D | A(7), C(9) | D(10) |
| 10-17 | A | C(9) | A(17) |
| 17-26 | C | C(26) |
| 프로세스 | 대기시간(종료 - 도착 - 실행) |
| A | 9 |
| B | 0 |
| C | 15 |
| D | 2 |
13. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
int main() {
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int* parr[2] = {arr[1], arr[2]};
printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
return 0;
}
정답 :
풀이 :
arr = { [1, 2, 3]
[4, 5, 6]
[7, 8, 9]}
parr[1] = arr[2]
arr[2][1] = 8
*(parr[1]+2) = arr[2][2] = 9
**parr = *(*parr) = *arr[1] = 4
14. 다음은 Java 언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
class Main {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
ODDNumber OE = new ODDNumber();
System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
}
}
interface Number {
int sum(int[] a, boolean odd);
}
class ODDNumber implements Number {
public int sum(int[] a, boolean odd) {
int result = 0;
for(int i=0; i < a.length; i++){
if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
result += a[i];
}
return result;
}
}
정답 : 25, 20
풀이 :
OE.sum(a, true) → 25
| i | odd | a[i] | a[i] % 2 | a[i] % 2 != 0 | result |
| 0 | true | 1 | 1 | true | 1 |
| 1 | 2 | 0 | false | ||
| 2 | 3 | 1 | true | 4 | |
| 3 | 4 | 0 | false | ||
| 4 | 5 | 1 | true | 9 | |
| 5 | 6 | 0 | false | ||
| 6 | 7 | 1 | true | 16 | |
| 7 | 8 | 0 | false | ||
| 8 | 9 | 1 | true | 25 |
OE.sum(a, false) → 20
| i | !odd | a[i] | a[i] %2 | a[i] % 2 == 0 | result |
| 0 | true | 1 | 1 | false | |
| 1 | 2 | 0 | true | 2 | |
| 2 | 3 | 1 | false | ||
| 3 | 4 | 0 | true | 6 | |
| 4 | 5 | 1 | false | ||
| 5 | 6 | 0 | true | 12 | |
| 6 | 7 | 1 | false | ||
| 7 | 8 | 0 | true | 20 | |
| 8 | 9 | 1 | false |
15. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
#include <string.h>
void sumFn(char* d, const char* s) {
while (*s) {
*d = *s;
d++;
s++;
}
*d = '\0';
}
int main() {
const char* str1 = "first";
char str2[50] = "teststring";
int result=0;
sumFn(str2, str1);
for (int i = 0; str2[i] != '\0'; i++) {
result += i;
}
printf("%d", result);
return 0;
}
정답 : 10
풀이 :
sumFn(str2, str1)
str2의 글자를 str1로 덮어쓰기
first
for문 글자수 확인 str[i] 크기는 5
0~4까지 result += i;
0 + 1 + 2 + 3 + 4 = 10
16. 아래는 소프트웨어 설계에 대한 내용이다. 내용을 읽고 괄호안에 알맞는 답을 작성하시오.
- 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해, 제어를 통신하거나 제어 요소를 전달하는 결합도이다.
- 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우에 발생한다.
( ) Coupling
정답 : 제어
17. 다음은 Java에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.
class Main {
public static void main(String[] args) {
String str = "abacabcd";
boolean[] seen = new boolean[256];
System.out.print(calculFn(str, str.length()-1, seen));
}
public static String calculFn(String str, int index, boolean[] seen) {
if(index < 0) return "";
char c = str.charAt(index);
String result = calculFn(str, index-1, seen);
if(!seen[c]) {
seen[c] = true;
return c + result;
}
return result;
}
}
정답 : dcba
풀이 :
calculFn(str, str.length()-1, seen)
str = "abacabcd"
맨 뒷글자부터 로직을 실행, 재귀로 index = 0의 결과값부터 더해가며 나옴
| index | c | seen[c] | result | c + result |
| 7 | d | false | cba | dcba |
| 6 | c | true | cba | |
| 5 | b | true | cba | |
| 4 | a | true | cba | |
| 3 | c | false | ba | cba |
| 2 | a | true | ba | |
| 1 | b | false | a | ba |
| 0 | a | false | a | a |
18. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.
#include <stdio.h>
void swap(int a, int b) {
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap(a, b);
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
default:
b += 3;
break;
}
printf("%d", a-b);
}
정답 : -13
풀이 :
swap(a, b) → main 내 변수는 변하지않음
a = 11
b = 19
switch(a) → case 11 → default(break문이 없기 때문에)
b += 2 = 21
b += 3 = 24
11 - 24 = -13
19. 다음은 C언어의 구조체에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.
#include <stdio.h>
struct node {
int n1;
struct node *n2;
};
int main() {
struct node a = {10, NULL};
struct node b = {20, NULL};
struct node c = {30, NULL};
struct node *head = &a;
a.n2 = &b;
b.n2 = &c;
printf("%d\n", head->n2->n1);
return 0;
}
정답 : 20
풀이 :
a → b → c → NULL 연걸리스트
head = a
a → n2 = b
b → n1 = 20
20. 다음은 Java에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오.
class Main {
public static void main(String[] args) {
String str = "ITISTESTSTRING";
String[] result = str.split("T");
System.out.print(result[3]);
}
}
정답 : S
풀이 :
T를 기준으로 split 진행
result = {"I", "IS", "ES", "S", "RING"}
result[3] = "S"
'이론공부 > 정보처리기사 실기 기출' 카테고리의 다른 글
| 정보처리기사 실기(23년 3회 기출복원) (0) | 2025.09.16 |
|---|---|
| 정보처리기사 실기(24년 1회 기출복원) (0) | 2025.09.14 |
| 정보처리기사 실기(24년 3회 기출복원) (0) | 2025.09.13 |
| 정보처리기사 실기(25년 2회 기출복원) (0) | 2025.09.11 |
| 정보처리기사 실기(25년 1회 기출복원) (0) | 2025.09.09 |