https://newbt.kr/시험/정보처리기사%20실기/2024년%203회/상두
뉴비티 기출문제 문제은행 - 완전 새로운 CBT, iBT 문제풀이 시스템
기사, 공무원, 공인중개사 등 로그인 필요 없는 수백가지 시험 기출문제 문제은행 시험 자격증 족보 2025년 최신
newbt.kr
1. 아래 자바 코드에서 출력되는 값을 작성하시오.
public class Main {
static void func(String[] m, int n) {
for (int i = 1; i < n; i++) {
if (m[i-1].equals(m[i])) {
System.out.print("O");
} else {
System.out.print("N");
}
}
for (String mo : m) {
System.out.print(mo);
}
}
public static void main(String[] args) {
String[] m = new String[3];
m[0] = "A";
m[1] = "A";
m[2] = new String("A");
func(m, 3);
}
}
정답: OOAAA
equal는 내용만 비교(기본 자료형에서 불가)
==는 기본자료형일 경우 내용 비교, 참조자료형인 경우 주소 비교
기본 자료형 int, double, char, boolean, float, long, short, byte
참조 자료형: String, Integer, Double, Object, ArrayList, UserDefinedClass
2. 아래 코드에서 출력되는 값을 작성하시오.
def test(lst):
for i in range(len(lst) // 2):
lst[i], lst[-i-1] = lst[-i-1], lst[i]
ls = [1,2,3,4,5,6]
test(ls)
print(sum(ls[::2]) - sum(ls[1::2]))
정답: 3
//(몫), /(나누기), %(나머지)
- range(stop): 0부터 stop-1까지의 숫자를 생성합니다.
- range(start, stop): start부터 stop-1까지의 숫자를 생성합니다.
- range(start, stop, step): start부터 stop-1까지 step 간격으로 숫자를 생성합니다.
st[0], lst[-1] = lst[-1], lst[0] # 1 <-> 6 교환 , lst[-1]은 리스트의 마지막 요소
lst[1], lst[-2] = lst[-2], lst[1] # 2 <-> 5 교환
lst[2], lst[-3] = lst[-3], lst[2] # 3 <-> 4 교환
def test(lst): # 리스트를 뒤집는 함수
for i in range(len(lst) // 2): # 6//2 = 3
lst[i], lst[-i-1] = lst[-i-1], lst[i] # 교환
ls = [1, 2, 3, 4, 5, 6] # 초기 리스트
test(ls) # 리스트 뒤집기
# 짝수 인덱스의 합에서 홀수 인덱스의 합을 뺀 값 계산
print(sum(ls[::2]) - sum(ls[1::2]))
4. LRU 페이지 교체 알고리즘에 따른 페이지 부재 횟수를 작성하시오. (프레임 3칸)
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
정답: 12
페이지 교체 알고리즘
OPT | . 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 . 페이지 부재 횟수가 가장 적게 발생 / 효율적 교체 알고리즘 |
FIFO | . First-in First-out . 가장 먼저 들어와 가장 오래 있었던 페이지를 교체 |
LRU | . Least Recently Used . 최근에 가장 오랫동안 사용하지 않은(오래 전에 사용된) 페이지를 교체 |
LFU | . Least Frequently Used . 사용 빈도가 가장 적은 페이지를 교체 / 활발한 페이지는 교체 X |
참조 페이지 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
페이지 프레임(3개) |
7 | 7 | 7 | 2 | 2 | 2 | 2 | 4 | 4 | 4 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 3 | 3 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | |
- | - | 1 | 0 | 1 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 7 | 7 | 7 | |
부재 발생 | O | O | O | O | X | O | X | O | O | O | O | X | X | O | X | X | O | O | X | X |
5. 다음으로 알맞은 용어를 작성하시오
ICMP, 송신 주소를 공격 대상의 IP 주소로 위장하고,
수신 주소를 해당 네트워크 라우터의 브로드캐스트 주소로 설정하는 공격으로 과부화 시키는 기법은?
ICMP 패킷을 크게 만들어서 과부화 시키는 죽음의 핑과 같은 서비스 공격 유형이다.
정답: 스머핑(Smurfing)
IP / ICMP 특성을 악용하여 엄청난 양의 데이터를 한
사이트에 집중적으로 보내 네트워크를 불능 상태로 만듬
6. 아래 코드에서 출력되는 값을 작성하시오.
int increment() {
static int x = 0;
x += 2;
return x;
}
int main() {
int x = 1;
int sum = 0;
for (int i = 0; i < 4; i++) {
x++;
sum += increment();
}
printf("%d\n", sum);
return 0;
}
정답: 20
int x =1, x++는 지역변수
static 변수이므로 함수가 호출될 때마다 값이 유지
2+4+6+8
7. 다음으로 알맞은 용어를 작성하시오
인터넷을 통해 장치 간 사설 네트워크 연결을 생성하는 서비스로
장치의 실제 IP 주소를 가상 IP 주소로 대체하고, 데이터를 암호화하고,
데이터를 전 세계 보안 네트워크로 라우팅함으로써 정보를 보호하는 기법
정답: VPN
8. 빈칸에 알맞은 용어를 작성하시오.
( ) 패턴은 객체 간의 상호 작용하는 방법과 책임을 분배하는 방법 에 중점을 두는 디자인 패턴으로
Command, Interpreter, Memento, Observer, Visitor등이 존재한다.
정답: 행위
생성 패턴 - 생빌 프로 팩앱싱
: 생성 - 빌더 / 프로토타입 / 팩토리 메서드 / 앱스트랙 팩토리 / 싱글톤
구조 패턴 - 구 브데 퍼플 프록컴어
: 구조 - 브리지 / 데코레이터 / 퍼사이드 / 플라이 웨이트 / 프록시 / 컴포지트 / 어댑터
행위 패턴 - 행 미인이 템옵 스터 비커 스트메체
: 행위 - 미디에이터 / 인터프리터 / 이터레이터 / 템플릿 / 옵져버 / 스테이트 / 비지터 / 커맨트 / 스트레티지 / 메멘토 / 체인 오브 리스판서빌리티
9. 아래 설명에 맞는 테스트 커버리지를 보기에서 골라 기호로 작성하시오.
1. 코드 내의 각 분기점이 true 또는 false로 평가될 때마다
해당 분기점이 모두 테스트 되는 것을 목표로 한다.
각 분기점이 모든 가능한 경로로 실행되었는지 확인하는 데 사용되는 커버리지 ( )
2. 코드의 흐름을 여러 갈래로 나누는 조건문 또는 선택문을 의미한다.
예를 들어, if-else 문이나 switch 문에서 조건에 따라
실행 경로가 달라질 때를 의미한다. ( )
3. 개별 조건문 내에 있는 각각의 조건이 true와 false 모두를 만족하도록 테스트하는 것을 의미한다.
예를 들어, if (A && B)와 같은 구문에서 A와 B가 각각 true와 false가 되는 경우를 테스트하는 것이 목표이다.( )
(보기)
㉠ 조건/결정 커버리지
㉡ 결정 커버리지
㉢ 조건 커버리지
㉣ 분기 커버리지
㉤ 변경 조건/결정 커버리지
㉥ 문장 커버리지
㉧ 다중 조건 커버리지
정답: 문장, 분기, 조건
테스트 커버리지
구 | 구문 커버리지(Statement Coverage) | 코드 한 줄이 한번 이상 실행 |
조 | 조건 커버리지(Condition Coverage) | 내부 조건 true/false |
결 | 결정 커버리지(Decision Coverage) | 모든 조건식 true/false |
조 | 조건/결정 커버리지(Condition/Decision Coverage) | 조건 커버리지를 개선 |
변 | 변형 조건/결정 커버리지(Modified Condition/Decision Coverage) | |
다 | 다중 조건 커버리지(Multiple Condition Coverage) |

10. 아래 설명에 맞는 용어 보기에서 골라 빈칸에 작성하시오.
1. 참조하는 테이블의 기본 키(Primary Key)를 가리키며, 데이터 무결성을 유지하는 데 중요한 역할을 한다. ( )
2. 유일성과 최소성을 모두 갖춘 키이다.
( )
3. 후보키 중에서 기본 키로 선택되지 않은 나머지 키이다.
( )
4. 유일성을 만족시키지만, 최소성은 만족시키지 않는다.
( )
(보기)
㉠ 슈퍼키
㉡ 외래키
㉢ 대체키
㉣ 후보키
㉡ 외래키
㉣ 후보키
㉢ 대체키
㉠ 슈퍼키

11. 아래 설명에 맞는 번호를 그림에서 골라 작성하시오.
추가적인 질의를 제공하는 부분으로, 웹 서버에 전달할 추가 데이터를 나타낸다.( )
자원 경로를 나타내며, 서버 상에서 해당 리소스의 위치를 지정한다. ( )
웹 프로토콜을 정의하는 부분으로, 예를 들어 HTTP, FTP 등의 방식을 나타낸다. ( )
호스트와 포트 번호를 나타내는 부분으로, 서버 주소와 함께 포트번호를 나타낸다. ( )
특정 페이지 내의 위치를 가리키며, 문서 내 특정 섹션으로 이동하는 데 사용된다. ( )
정답:
④ 질의 query
③ 자원 경로 path
① 웹 프로토콜 HTTP, FTP schema
② 호스트와 포트 번호 authority
⑤ 특정 페이지 내의 위치 fragment
12. 아래 코드에서 출력되는 값을 작성하시오.
#include <stdio.h>
struct Node {
int value;
struct Node* next;
};
void func(struct Node* node){
while(node != NULL && node->next != NULL){
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
int main(){
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
func(&n1);
struct Node* current = &n1;
while(current != NULL){
printf("%d", current->value);
current = current->next;
}
return 0;
}
정답: 312
struct Node {
int value;
struct Node* next;
};
구조체(struct Node)는 value라는 정수 값과
next라는 다음 노드를 가리키는 포인터(struct Node*)
n1.next = &n3;
n3.next = &n2;
n1(1) → n3(3) → n2(2) → NULL
함수를 실행기 전 리스트 상태
1 -> 3 -> 2
func() 함수의 동작
node가 n1(1), node->next는 n3(3)
int t = node->value; // t = 1
node->value = node->next->value; // n1.value = 3
node->next->value = t; // n3.value = 1
바꾼 후 리스트
3 → 1 → 2
13. 다음으로 알맞은 용어를 작성하시오
( ) 무결성은 데이터베이스의 테이블에서 기본 키(Primary Key) 값을 반드시 유일하고
NULL이 아니게 유지해야 한다는 규칙을 의미한다.
정답: 개체

14. 아래 코드에서 출력되는 값을 작성하시오.
def test(v):
if type(v) == type(""):
return len(v)
elif type(v) == type(100):
return 101
else:
return 20
a = "100.0"
b = 100.0
c = (100.0, 200.0)
print(test(a) + test(b) + test(c))
정답: 45
def test(v):
if type(v) == type(""): # v가 문자열(str) 타입이면
return len(v) # 문자열의 길이 반환
elif type(v) == type(100): # v가 정수(int) 타입이면
return 101 # 101 반환
else: # 그 외의 타입이면
return 20 # 20 반환
a = "100.0" # 문자열 (길이: 5)
b = 100.0 # 실수(float)
c = (100.0, 200.0) # 튜플(tuple)
15. 빈칸에 맞는 기호를 보기에서 골라 작성하시오.
정답:
(1) 연관
(2) 일반화
(3) 의존

16. 아래 코드에서 출력되는 값을 작성하시오.
public class Main {
public static void main(String[] args) {
int sum = 0;
try {
func();
} catch(NullPointerException e) {
sum = sum + 1;
} catch(Exception e) {
sum = sum + 10;
} finally {
sum = sum + 100;
}
System.out.print(sum);
}
static void func() throws Exception {
throw new NullPointerException();
}
}
정답: 101
func() 실행하면 NullPointerException()을 일단 날립니다~ => sum = 1
catch문은 하나가 실행되면 finally로 가고 없다면 바로 탈출합니다.
그래서 finally sum = sum +100 해서 정답은 101입니다
17. 아래 코드에서 출력되는 값을 작성하시오.
class B {
int x = 3;
int getX() {
return x * 2;
}
}
class A extends B {
int x = 7;
@Override
int getX() {
return x * 3;
}
}
public class Annotation {
public static void main(String[] args) {
B b1 = new A();
A b2 = new A();
System.out.print(b1.getX() + b1.x + b2.getX() + b2.x);
}
}
정답: 52
업캐스팅
- 업캐스팅은 자식 클래스가 부모 클래스 타입으로 캐스팅 되는 것이다.
- 업캐스팅을 하고 메소드를 실행할때, 만일 자식 클래스에서 오버라이딩한 메서드가 있을 경우, 부모 클래스의 메서드가 아닌 오버라이딩 된 메서드가 실행되게 된다.
// 부모 클래스 B 선언
class B {
int x = 3; // 인스턴스 변수 x 선언 및 초기화
int getX() { // getX() 메서드 정의
return x * 2; // x의 값을 2배로 반환
}
}
// 자식 클래스 A가 B를 상속
class A extends B {
int x = 7; // B의 x를 숨기고 새로운 x 선언 및 초기화
@Override
int getX() { // B의 getX()를 오버라이딩
return x * 3; // x의 값을 3배로 반환
}
}
public class Annotation {
public static void main(String[] args) {
B b1 = new A(); // 부모 타입(B)으로 자식 클래스(A)의 객체 생성 (업캐스팅)
A b2 = new A(); // 자식 타입(A)으로 자식 클래스(A)의 객체 생성
// 출력 부분
System.out.print(b1.getX() + b1.x + b2.getX() + b2.x);
/*
* b1.getX() → A의 getX() 호출 (오버라이딩됨) → x(7) * 3 = 21
* b1.x → B의 x 값 참조 (B 타입이므로) → 3
* b2.getX() → A의 getX() 호출 → x(7) * 3 = 21
* b2.x → A의 x 값 참조 → 7
* 최종 결과: 21 + 3 + 21 + 7 = 52
*/
}
}
18. 아래 코드에서 출력되는 값을 작성하시오.
class Printer {
void print(Integer a) {
System.out.print("A" + a);
}
void print(Object a) {
System.out.print("B" + a);
}
void print(Number a) {
System.out.print("C" + a);
}
}
public class Generic {
public static void main(String[] args) {
new Container<>(10).print();
}
public static class Container<T> {
T value;
public Container(T t) {
value = t;
}
public void print() {
new Printer().print(value);
}
}
}
정답: B10
제네릭 T는 매개변수에 맞춰 타입을 변경해서 사용
T 자체의 type은 Object입니다!
A10을 출력하려면 value를 명확히 Integer로 캐스팅해야 함
new Printer().print((Integer) value);
19. 아래 코드에서 출력되는 값을 작성하시오.
void func1(int** arr, int size) {
for(int i=0; i
*(*arr + i) = (*(*arr + i) + i) % size;
}
}
void func2(int* num, int* arr) {
*num = arr[*num % 4];
}
int main() {
int arr[] = {3, 1, 4, 1, 5};
int* p = arr;
int** pp = &p;
int num = 6;
func1(pp, 5);
func2(&num, arr);
printf("%d", num);
}
정답: 1
int x = 7; // 변수 x
int* ptr = &x; // ptr는 x를 가리키는 포인터
int** pptr = &ptr; // pptr는 ptr를 가리키는 포인터

int arr[] = {3, 1, 4, 1, 5}
int * p = arr; // p == &arr[0]
int ** pp = &p;

func1 실행 과정: arr[i] = *(arr+1)
arr[0] = (3 + 0) % 5 = 3
arr[1] = (1 + 1) % 5 = 2
arr[2] = (4 + 2) % 5 = 1
arr[3] = (1 + 3) % 5 = 4
arr[4] = (5 + 4) % 5 = 4
func2 실행 과정:
arr[6 % 4] = arr[2] = 1

20. 아래 설명에 맞는 용어를 작성하시오.
- 중앙 집중식 인프라 없이, 즉 사전 설정된 네트워크 기반 시설이 없이 구성된 자율형 네트워크를 의미합니다. 이러한 네트워크는 노드(주로 무선 장치)가 서로 직접 연결하여 통신하며, 군사 작전 중에 실시간으로 정보를 공유하기 위한 네트워크로 사용된다.
- 중앙 관리나 고정된 인프라 없이 임시로 구성되는 네트워크이다.
- 일반적으로 무선 통신을 통해 노드들이 직접 연결되어 데이터를 주고받는다.
- 긴급 구조, 긴급 회의, 군사적인 상황 등에서 유용하게 활용될 수 있다.
ㄱ.Infrastructure Network ㄴ. Firmware Network
ㄷ. Peer-to-Peer Network ㄹ. Ad-hoc Network
ㅁ. Mesh Network ㅂ.Sensor Network ㅅ.Virtual Private Network
'자격증 > 정처기' 카테고리의 다른 글
[정보처리기사 실기] 2024년 2회 기출문제 풀이 (0) | 2025.03.18 |
---|---|
[정보처리기사 실기] 2024년 1회 기출문제 풀이 (0) | 2025.03.18 |
[정보처리기사 실기] 2023년 3회 기출문제 풀이 (0) | 2025.02.14 |
[정보처리기사 실기] 2023년 2회 기출문제 풀이 (0) | 2025.02.14 |
[정보처리기사 실기] 2023년 1회 기출문제 풀이 (0) | 2025.02.14 |