집에가고싶은사람의 블로그
정보처리기사 실기 AI로 생성한 예제문제 2024-09-25 본문
이 게시글은 2024년도 정보처리기사 실기 시험 데이터를 학습시켜 만들었습니다.
이미지 생성부분과 과거 시험 데이터는 추후에 개선 할 예정입니다.
## 회차: 2024-2회차 문제: 11번
회차: 2024-2회차의 11번 문제의 예제입니다.
문제: 다음 그림은 네트워크 토폴로지를 나타낸 것이다. 각 노드 사이의 링크 비용이 주어졌을 때, 노드 A에서 노드 F로 가는 최단 경로를 구하시오.
노드 | A | B | C | D | E | F |
---|---|---|---|---|---|---|
A | 0 | 2 | INF | 1 | INF | INF |
B | 2 | 0 | 3 | 2 | INF | INF |
C | INF | 3 | 0 | INF | 1 | 5 |
D | 1 | 2 | INF | 0 | 4 | INF |
E | INF | INF | 1 | 4 | 0 | 2 |
F | INF | INF | 5 | INF | 2 | 0 |
정답 및 해설보기
해설: 다익스트라 알고리즘을 사용하여 최단 경로를 구할 수 있습니다. A에서 출발하여 각 노드까지의 최단 거리를 갱신해나가면서 F까지의 최단 경로를 찾습니다. 주어진 링크 비용을 고려하여 계산하면 A → D (비용 1) → B (비용 2) → C (비용 3) → E (비용 1) → F (비용 2)가 최단 경로가 됩니다. 총 비용은 1 + 2 + 3 + 1 + 2 = 9입니다.
## 회차: 2024-2회차 문제: 14번
회차: 2024-2회차의 14번 문제의 예제입니다.
문제: 다음은 Java 언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. 코드:
class Main {
public static void main(String[] args) {
int[] arr = {5, 10, 15, 20, 25, 30};
Calculator calc = new Calculator();
System.out.print(calc.calculateSum(arr, 1) + ", " + calc.calculateSum(arr, 0));
}
}
interface Calculation {
int calculateSum(int[] arr, int mod);
}
class Calculator implements Calculation {
public int calculateSum(int[] arr, int mod) {
int sum = 0;
for (int num : arr) {
if (num % 2 == mod) {
sum += num;
}
}
return sum;
}
}
정답 및 해설보기
해설: Calculator 클래스의 calculateSum 메서드는 전달받은 배열에서 mod 값에 따라 홀수 또는 짝수 값들의 합을 계산하여 반환합니다. main 메서드에서 첫 번째로 calc.calculateSum(arr, 1)을 호출하면 mod 값이 1이므로 배열 arr에서 홀수인 5, 15, 25의 합인 45가 반환됩니다. 두 번째로 calc.calculateSum(arr, 0)을 호출하면 mod 값이 0이므로 배열 arr에서 짝수인 10, 20, 30의 합인 60이 반환됩니다. 따라서 출력 결과는 "45, 60"이 됩니다.
## 회차: 2024-2회차 문제: 3번
회차: 2024-2회차의 3번 문제의 예제입니다.
문제: 다음은 SQL에 관한 문제이다. 아래 SQL 구문의 빈칸을 작성하시오. 코드:
테이블
학생 [학번(PK), 이름, 학년, 전공]
성적 [학번(PK), 과목, 점수]
신입생이 입학하여 학생 테이블에 추가
INSERT INTO 학생 (학번, 이름, 학년, 전공) [ ① ] ('20230001', '김철수', 1, '컴퓨터공학');
위 신입생의 성적을 검색하면서 성적 테이블에 추가
INSERT INTO 성적 (학번, 과목, 점수) [ ② ] 학번, '프로그래밍 기초', 95 FROM 학생 WHERE 이름 = '김철수';
전체 학생 테이블 조회
SELECT * [ ③ ] 학생;
학생의 전공을 '컴퓨터공학'에서 '소프트웨어공학'으로 변경
UPDATE 학생 [ ④ ] 전공 = '소프트웨어공학' WHERE 학번 = '20230001';
정답 및 해설보기
{'①': 'VALUES', '②': 'SELECT', '③': 'FROM', '④': 'SET'}
해설:
① INSERT INTO 구문에서 새로운 레코드를 추가할 때는 VALUES 키워드를 사용합니다.
② INSERT INTO ~ SELECT 구문을 사용하여 다른 테이블에서 데이터를 검색하면서 현재 테이블에 추가할 수 있습니다.
③ SELECT 구문에서 FROM 키워드 다음에는 조회할 테이블 이름을 명시합니다.
④ UPDATE 구문에서 SET 키워드를 사용하여 변경할 컬럼과 값을 지정합니다.
## 회차: 2024-1회차 문제: 11번
회차: 2024-1회차의 11번 문제의 예제입니다.
문제: 다음 C언어의 알맞는 출력값을 작성하시오. 코드:
#include
struct Student {
char name[20];
int kor;
int eng;
int math;
double avg;
};
void calcAvg(struct Student *s) {
s->avg = (s->kor + s->eng + s->math) / 3.0;
}
int main() {
struct Student s1 = {"John", 85, 92, 78};
struct Student s2 = {"Jane", 90, 88, 95};
calcAvg(&s1);
calcAvg(&s2);
printf("%.2f\n", s1.avg);
printf("%.2f\n", s2.avg);
return 0;
}
정답 및 해설보기
85.00
91.00
해설: main 함수에서 Student 구조체 변수 s1과 s2를 초기화하고 있습니다. 이후 calcAvg 함수를 호출하여 각 학생의 평균을 계산합니다. calcAvg 함수는 포인터를 사용하여 구조체 멤버에 접근하고, 평균을 계산하여 avg 멤버에 저장합니다. 마지막으로 printf 함수를 사용하여 각 학생의 평균을 소수점 둘째 자리까지 출력합니다. 따라서 출력 결과는 s1의 평균인 85.00과 s2의 평균인 91.00이 됩니다.
## 회차: 2024-1회차 문제: 8번
회차: 2024-1회차의 8번 문제의 예제입니다.
문제: 다음 설명에 해당하는 SQL 문법을 작성하시오.
(1) 지정된 테이블의 모든 행을 삭제하는 명령어이다.
(2) 테이블의 구조는 남기고 데이터만 삭제한다.
(3) ROLLBACK을 통해 삭제 이전 상태로 복구할 수 있다.
(4) 조건절(WHERE)을 사용하여 특정 조건을 만족하는 행만 삭제할 수 있다.
정답 및 해설보기
해설: DELETE 문은 테이블에서 행을 삭제하는 데 사용되는 DML(Data Manipulation Language) 문 중 하나이다. DELETE 문을 실행하면 지정된 테이블에서 조건(WHERE절)을 만족하는 행이 삭제되며, 삭제된 행은 ROLLBACK 문을 사용하여 복구할 수 있다. 삭제 작업 시 테이블의 구조는 변경되지 않고 데이터만 삭제된다.
## 회차: 2024-2회차 문제: 18번
회차: 2024-2회차의 18번 문제의 예제입니다.
문제: 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력 값을 작성하시오. 코드:
#include
int func(int a, int b) {
if (a <= 0 || b <= 0) {
return 0;
}
int result = 1;
for (int i = 0; i < b; i++) {
result *= a;
}
return result;
}
int main() {
int a = 2;
int b = 4;
int result = func(a, b);
switch(result) {
case 2:
b += 2;
case 4:
b += 4;
case 16:
b += 6;
default:
b += 8;
break;
}
printf("%d", a*b);
}
정답 및 해설보기
해설: func 함수는 a^b를 계산하는 함수이다. a=2, b=4 이므로 func(2, 4) = 16 이다. switch문에서 result는 16이므로 case 16부터 시작해서 b에 6을 더하고 break문이 없으므로 default까지 내려가 추가로 8을 더하게 된다. 따라서 b의 최종값은 4+6+8=18이 되고, a*b = 2*18 = 36이 된다.
## 회차: 2024-2회차 문제: 8번
회차: 2024-2회차의 8번 문제의 예제입니다.
문제: 다음 중 패킷 교환 방식의 종류가 아닌 것은?
① 가상회선 방식
② 데이터그램 방식
③ 서킷 교환 방식
④ 프레임 릴레이 방식
정답 및 해설보기
해설: 서킷 교환 방식은 패킷 교환 방식이 아닌 회선 교환 방식에 해당한다. 가상회선 방식, 데이터그램 방식, 프레임 릴레이 방식은 모두 패킷 교환 방식의 종류이다.
## 회차: 2024-2회차 문제: 6번
회차: 2024-2회차의 6번 문제의 예제입니다.
문제: 다음은 Python에 대한 문제이다. 아래 코드를 읽고 알맞는 출력 값을 작성하시오. 코드:
def count_substring(string, sub_string):
count = 0
for i in range(len(string)):
if string[i:].startswith(sub_string):
count += 1
return count
string = "ABCDCDC"
sub_string1 = "CDC"
sub_string2 = "CD"
result = f"{sub_string1}{count_substring(string, sub_string1)}{sub_string2}{count_substring(string, sub_string2)}"
print(result)
정답 및 해설보기
해설: 주어진 문자열 "ABCDCDC"에서 부분 문자열 "CDC"는 1번 등장하고, 부분 문자열 "CD"는 2번 등장합니다. count_substring 함수는 문자열에서 특정 부분 문자열이 등장하는 횟수를 세는 역할을 합니다. startswith 메서드를 사용하여 부분 문자열의 등장 여부를 판단하고, 카운트를 증가시킵니다. 결과적으로 f-string을 사용하여 부분 문자열과 해당 부분 문자열의 등장 횟수를 조합하여 최종 출력 값을 생성합니다.
## 회차: 2024-2회차 문제: 15번
회차: 2024-2회차의 15번 문제의 예제입니다.
문제: 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오. 코드:
#include <stdio.h>
#include <string.h>
int calcLength(char* str) {
int length = 0;
while (*str) {
length++;
str++;
}
return length;
}
int main() {
char str1[] = "Hello, World!";
char str2[] = "Programming is fun!";
int len1 = calcLength(str1);
int len2 = calcLength(str2);
printf("%d\n", len1 + len2);
return 0;
}
정답 및 해설보기
해설: calcLength 함수는 문자열의 길이를 계산하여 반환합니다. str1의 길이는 13이고, str2의 길이는 19입니다. 두 문자열의 길이를 더한 값인 13 + 19 = 32가 출력됩니다.
## 회차: 2024-1회차 문제: 17번
회차: 2024-1회차의 17번 문제의 예제입니다.
문제: 다음 설명에 해당하는 보안 위협으로 가장 적절한 것은?
1. 사용자가 의심할 만한 이메일을 열어 첨부파일을 실행하도록 유도한다.
2. 취약한 시스템에 대한 지속적인 탐색과 침투를 시도한다.
3. 시스템 권한을 획득한 후 중요 정보를 탈취하는 것이 주 목적이다.
4. 장기간에 걸쳐 은밀히 진행되며 탐지와 대응이 매우 어렵다. 보기:
ㄱ. DDoS 공격 ㄴ. 백도어 ㄷ. SQL 인젝션 ㄹ. 지능형 지속 공격(APT)
정답 및 해설보기
해설: 지능형 지속 공격(APT)은 특정 조직을 목표로 장기간에 걸쳐 은밀히 수행되는 공격이다. 공격자는 사회공학적 기법 등을 통해 시스템에 침투하고, 내부 시스템을 지속적으로 탐색하며 중요 정보를 탈취한다. 일반적인 공격과 달리 탐지와 대응이 어려운 것이 특징이다.
## 회차: 2024-2회차 문제: 5번
회차: 2024-2회차의 5번 문제의 예제입니다.
문제: 다음은 전송 계층 프로토콜에 대한 설명이다. 괄호 안에 알맞은 용어를 쓰시오.
- 전송 계층에서 신뢰성 있는 데이터 전송을 담당하는 프로토콜이다.
- 데이터의 순서를 보장하고, 흐름 제어와 혼잡 제어 기능을 제공한다.
- 가상 회선 방식을 사용하여 연결 지향적인 특징을 가진다.
- 데이터를 세그먼트 단위로 분할하여 전송한다.
( )
정답 및 해설보기
해설: TCP(Transmission Control Protocol)는 전송 계층에서 신뢰성 있는 데이터 전송을 담당하는 프로토콜입니다. TCP는 가상 회선 방식을 사용하여 연결 지향적인 특징을 가지며, 데이터의 순서를 보장하고 흐름 제어와 혼 잡 제어 기능을 제공합니다. 또한, TCP는 데이터를 세그먼트 단위로 분할하여 전송합니다.
## 회차: 2024-1회차 문제: 18번
회차: 2024-1회차의 18번 문제의 예제입니다.
문제: 아래의 SQL 코드와 테이블을 참고하여 결과 값을 작성하시오.
EMPNO | ENAME | DEPTNO |
---|---|---|
7369 | SMITH | 20 |
7499 | ALLEN | 30 |
7521 | WARD | 30 |
7566 | JONES | 20 |
7654 | MARTIN | 30 |
7698 | BLAKE | 30 |
7782 | CLARK | 10 |
7788 | SCOTT | 20 |
7839 | KING | 10 |
7844 | TURNER | 30 |
7876 | ADAMS | 20 |
7900 | JAMES | 30 |
7902 | FORD | 20 |
7934 | MILLER | 10 |
코드:
SELECT COUNT(*)
FROM EMP
WHERE DEPTNO = 20
OR ENAME LIKE 'A%'
정답 및 해설보기
해설: DEPTNO가 20인 사원은 SMITH, JONES, SCOTT, ADAMS, FORD로 5명이고, 이름이 A로 시작하는 사원은 ALLEN과 ADAMS가 있습니다. ADAMS는 DEPTNO가 20이면서 이름도 A로 시작하므로 OR 연산에 의해 1번만 카운트됩니다. 따라서 총 5명의 사원이 조건을 만족합니다.
## 회차: 2024-1회차 문제: 14번
회차: 2024-1회차의 14번 문제의 예제입니다.
문제: 다음은 화이트박스 테스트에 대한 설명이다. 빈칸에 들어갈 알맞은 용어를 보기에서 골라 작성하시오. 화이트박스 테스트는 소프트웨어의 내부 구조와 동작을 검사하는 테스트 방식으로, 프로그램 내부의 논리 흐름에 따라 테스트를 수행한다. 이 중 ( A )는 프로그램 내의 모든 문장을 한 번 이상 수행하도록 테스트 케이스를 설계하는 기법이며, ( B )는 프로그램 내의 모든 결정(if, while 등)이 참과 거짓이 되는 경우를 최소한 한 번씩 수행하도록 테스트 케이스를 설계하는 기법이다. 보기:
ㄱ. 문장 커버리지 ㄴ. 결정 커버리지 ㄷ. 조건 커버리지 ㄹ. 경로 커버리지
정답 및 해설보기
해설:
- 문장 커버리지(Statement Coverage)는 프로그램 내의 모든 실행 가능한 문장을 최소한 한 번은 실행하도록 테스트 케이스를 작성하는 방법이다.
- 결정 커버리지(Decision Coverage)는 프로그램 내 모든 결정문(조건문, 반복문)에 대해 참과 거짓 결과를 최소한 한 번씩 실행하도록 테스트 케이스를 작성하는 방법이다.
## 회차: 2024-1회차 문제: 9번
회차: 2024-1회차의 9번 문제의 예제입니다.
문제: 다음은 운영체제 페이지 순서를 참고하여 할당된 프레임의 수가 4개일 때 LRU와 LFU 알고리즘의 페이지 부재 횟수를 작성하시오. 코드:
페이지 참조 순서 : 1, 2, 3, 4, 2, 1, 5, 1, 2, 3, 4, 5
정답 및 해설보기
해설: LRU 알고리즘은 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘이며, LFU 알고리즘은 사용 빈도가 가장 적은 페이지를 교체하는 알고리즘입니다. 주어진 페이지 참조 순서에 따라 LRU와 LFU 알고리즘을 적용 하면 LRU는 8번, LFU는 10번의 페이지 부재가 발생합니다.
## 회차: 2024-1회차 문제: 16번
회차: 2024-1회차의 16번 문제의 예제입니다.
문제: 다음 Java 코드를 보고 알맞는 출력 값을 작성하시오. 코드:
class Animal {
String name;
int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void makeSound() {
System.out.println("동물이 소리를 냅니다.");
}
}
class Dog extends Animal {
String breed;
public Dog(String name, int age, String breed) {
super(name, age);
this.breed = breed;
}
public void makeSound() {
System.out.println("멍멍!");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog("뽀삐", 3, "말티즈");
dog.makeSound();
}
}
정답 및 해설보기
해설: Dog 클래스는 Animal 클래스를 상속받았으며, makeSound() 메서드를 오버라이딩하였습니다. main 메서드에서 Animal 타입의 변수 dog에 Dog 객체를 할당하고 makeSound() 메서드를 호출하면, 오버라이딩된 Dog 클래스의 makeSound() 메서드가 실행되어 "멍멍!"이 출력됩니다.
## 회차: 2024-1회차 문제: 5번
회차: 2024-1회차의 5번 문제의 예제입니다.
문제: 아래 그림에서의 네트워크에서 라우터를 통한 할당 가능한 1번, 3번, 6번의 IP를 작성하시오.
"아직 이미지는 생성할수없습니다."
코드:
보기:
2) 192.168.10.64/26
4) 172.16.0.0/16
5) 10.0.0.0/8
가능한 IP:
192.168.10.127
192.168.11.0
172.16.255.255
10.0.0.1
10.255.255.254
192.168.10.128
정답 및 해설보기
해설: - 1번: 192.168.10.64/26의 경우 192.168.10.64 ~ 192.168.10.127까지 할당 가능하므로 192.168.10.127이 가능한 IP이다. - 3번: 10.0.0.0/8의 경우 10.0.0.0 ~ 10.255.255.255까지 할당 가능하므로 10.255.255.254이 가능한 IP이다. - 6번: 192.168.10.64/26의 경우 192.168.10.128 ~ 192.168.10.191까지는 다른 네트워크에 속하므로 192.168.10.128이 가능한 IP이다.
## 회차: 2024-1회차 문제: 19번
회차: 2024-1회차의 19번 문제의 예제입니다.
문제: 다음 C언어 코드의 알맞는 출력 값을 작성하시오. 코드:
#include
#include
int main(){
char* p = "Hello 2023!";
char result[100];
int i;
for(i = 0; p[i] != '\0'; i++){
if(isupper(p[i]))
result[i] = (p[i] - 'A' + 7) % 26 + 'A';
else if(islower(p[i]))
result[i] = (p[i] - 'a' + 13) % 26 + 'a';
else if(isdigit(p[i]))
result[i] = (p[i] - '0' + 5) % 10 + '0';
else if(!(isupper(p[i]) || islower(p[i]) || isdigit(p[i])))
result[i] = p[i];
}
result[i] = '\0';
printf("%s\n", result);
return 0;
}
정답 및 해설보기
해설: 주어진 코드는 문자열을 순회하면서 각 문자를 다음과 같이 변환합니다.
- 대문자는 알파벳 순서에서 7만큼 이동하고, Z를 넘어갈 경우 A부터 다시 시작합니다.
- 소문자는 알파벳 순서에서 13만큼 이동하고, z를 넘어갈 경우 a부터 다시 시작합니다.
- 숫자는 5만큼 이동하고, 9를 넘어갈 경우 0부터 다시 시작합니다.
- 그 외의 문자는 변환하지 않습니다.
따라서 "Hello 2023!"를 변환하면 "Olssv 7578!"가 됩니다.
## 회차: 2024-1회차 문제: 10번
회차: 2024-1회차의 10번 문제의 예제입니다.
문제: 아래 JAVA언어 코드의 실행 순서를 중복 번호없이 작성하시오. 코드:
class Animal {
public Animal(String name) { ①
System.out.println("Animal constructor called"); ②
}
public void makeSound() { ⑤
System.out.println("Animal makes a sound"); ⑥
}
}
class Dog extends Animal {
public Dog(String name) { ③
super(name); ④
}
public void makeSound() { ⑦
System.out.println("Dog barks"); ⑧
}
}
public class Main {
public static void main(String[] args) { ⑨
Animal animal = new Dog("Buddy"); ⑩
animal.makeSound(); ⑪
}
}
정답 및 해설보기
해설: 1. animal 변수가 Dog 객체를 참조하므로 Dog 생성자가 호출됩니다. (10번)
2. Dog 생성자에서 super 키워드를 통해 Animal 생성자를 호출합니다. (3번, 4번)
3. Animal 생성자가 실행되면서 "Animal constructor called"를 출력합니다. (1번, 2번)
4. animal.makeSound()가 호출되면, 오버라이딩된 Dog 클래스의 makeSound() 메서드가 실행됩니다. (11번, 7번, 8번)
따라서 전체 실행 순서는 10 -> 3 -> 4 -> 1 -> 2 -> 11 -> 7 -> 8 입니다.
## 회차: 2024-1회차 문제: 20번
회차: 2024-1회차의 20번 문제의 예제입니다.
문제: 다음 아래의 내용을 보고 알맞는 용어를 작성하시오. 시스템의 구조와 행위를 정의하는데 협력하는 요소들의 집합이다. 시스템을 구성하는 요소로는 클래스, 인터페이스, 관계 등이 있다. 대표적으로 'ABCD'라는 도구를 활용하여 표현할 수 있다. 프로젝트 개발 팀원 사이의 의사소통의 도구로서 활용될 수 있다. 코드: None
정답 및 해설보기
해설: 디자인 패턴은 시스템의 구조와 행위를 정의하는데 협력하는 클래스, 인터페이스, 관계 등의 요소 집합을 의미합니다. 대표적으로 UML(Unified Modeling Language)을 활용하여 디자인 패턴을 표현할 수 있으며, 개발 팀원들 간의 의사소통 도구로서 활용될 수 있습니다.
## 회차: 2024-1회차 문제: 4번
회차: 2024-1회차의 4번 문제의 예제입니다.
문제: 다음은 C언어에 대한 문제이다. 알맞는 출력 값을 작성하시오. 코드:
#include <stdio.h>
#include <string.h>
void encrypt(char* str, int key){
int len = strlen(str);
for(int i=0; i<len; i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = ((str[i] - 'A' + key) % 26) + 'A';
}
else if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = ((str[i] - 'a' + key) % 26) + 'a';
}
}
}
int main(int argc, char* argv[]){
char str[100] = "Hello, World!";
int key = 3;
encrypt(str, key);
printf("%s\n", str);
return 0;
}
정답 및 해설보기
해설: 주어진 코드는 Caesar Cipher 알고리즘을 구현한 것입니다. 문자열의 각 알파벳 문자를 주어진 키(key) 값만큼 이동시켜 암호화합니다. 대문자는 대문자로, 소문자는 소문자로 순환하며 이동합니다. 알파벳이 아닌 문자는 그대로 유지됩니다. 따라서 "Hello, World!" 문자열을 키 값 3으로 암호화하면 "Khoor, Zruog!"가 출력됩니다.
'정보처리기사 > 실기 예제' 카테고리의 다른 글
정보처리기사 실기 AI로 생성한 예제문제 2024-09-30 (1) | 2024.09.30 |
---|---|
정보처리기사 실기 AI로 생성한 예제문제 2024-09-27 (0) | 2024.09.27 |
정보처리기사 실기 AI로 생성한 예제문제 2024-09-26 (5) | 2024.09.26 |