뉴비티 기출문제 문제은행 - 완전 새로운 CBT, iBT 문제풀이 시스템
기사, 공무원, 공인중개사 등 로그인 필요 없는 수백가지 시험 기출문제 문제은행 시험 자격증 족보 2025년 최신
newbt.kr
1. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오
public class Main {
public static void check(int[] x, int[] y) {
if(x==y) System.out.print("O");
else System.out.print("N");
}
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(b, c);
check(a, c);
}
}
정답: NNN
.equlas 쓰면 ONN ==쓰면 NNN
equal는 내용만 비교(기본 자료형에서 불가)
==는 기본자료형일 경우 내용 비교, 참조자료형인 경우 주소 비교
기본 자료형 int, double, char, boolean, float, long, short, byte
참조 자료형: String, Integer, Double, Object, ArrayList, UserDefinedClass
2. 다음 내용이 설명하는 용어를 쓰시오.
시스템의 성능을 향상시키고 개발 및 운영의 편의성 등을 높이기 위해
정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
정답: 반정규화 (비정규화, 역정규화)
3. 다음의 조건을 만족하도록 괄호에 적합한 명령을 넣어 SQL문을 완성하시오.
[테이블]
사원 [사원번호(PK), 이름, 나이, 부서]
부서 [사원번호(PK), 이름, 주소, 나이]
① 신입사원이 들어와서 부서 테이블에 새로운 사람을 추가
INSERT INTO 부서 (사원번호, 이름, 주소, 나이) ( ① ) (240728, '홍길동', '서울', 30);
② 부서 테이블에서 추가한 사원을 검색한 후 사원 테이블에 추가
INSERT INTO 사원 (사원번호, 이름, 나이, 부서)
( ② ) 사원번호, 이름, 나이, ‘영업’ FROM 부서 WHERE 이름 = '홍길동';
③ 전체 사원 테이블 조회
SELECT * ( ③ ) 사원;
④ 사원의 퇴사로 인해 부서에 해당하는 값을 '퇴사'로 변경
UPDATE 사원 ( ④ ) 부서 = '퇴사' WHERE 사원번호 = 240728;
정답: ① values ② select ③ from ④ set
4. 다음 테이블에서 카디널리티(Cardinality)와 디그리(Degree)를 구하시오.

정답:
① 카디널리티(Cardinality) : 5
② 디그리(Degree) : 4
* 속디차: 속성(열) = 디그리 = 차수
* 튜카: 튜플(행) = 카디널리티 = 행
5. 다음 설명에 해당하는 프로토콜을 쓰시오.
- Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.
- 기업에서 사설 인터넷망으로 사용할 수 있는 VPN을 구현하는데 사용되는 프로토콜이다.
- AH(Authentication Header)와 ESP(Encapsulating Security Payload)라는 두 가지 보안 프로토콜을 사용한다.
정답: IPSec
AH+ESP
6. 모듈에 대한 다음 설명에 해당하는 응집도(Cohesion)를 에서 찾아 쓰시오.

실행 순서가 밀접한 관계를 갖는 기능을 모아 모듈로 구성하며,
한 모듈 내부의 한 기능 요소에 의한 출력 자료가 다음 기능 원소의 입력 자료로써 제공되는 형태이다.
정답: ㉥ 순차적 응집도(Sequential Cohesion)

7. 디자인 패턴에 대한 다음 설명에서 알맞은 용어를 에서 찾아 쓰시오

- 컬렉션 객체의 내부 구조를 노출하지 않고 순차적으로 접근할 수 있게 하는 패턴이다.
- 객체의 내부 표현 방식에 독립적으로 요소에 접근할 수 있다.
- 반복 프로세스를 캡슐화하여 클라이언트 코드에서는 컬렉션의 구체적인 구현에 종속되지 않게 한다.
- Cursor라고도 한다.
8. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
def cnt(str, p):
result = 0
for i in range(len(str)):
sub = str[i:i+len(p)]
if sub == p:
result += 1
return result
str = "abdcabcabca"
p1 = "ca"
p2 = "ab“
print(f'ab{cnt(str, p1)} ca{cnt(str, p2)}')
정답: ab3 ca3
f-string 포매팅
f'문자열 {변수} 문자열'
p1(ca 3번)
abdcabcabca
p2(ab 3번)
abdcabcabca
9. 데이터 교환 방식에 대한 다음 설명에서 괄호(①, ②)에 들어갈 알맞은 용어를 쓰시오.
( ① ) : 연결형 통신에서 주로 사용되는 방식으로, 출발지와 목적지의 전송 경로를 미리 연결하여 논리적으로 고정한 후 통신하는 방식이다.
( ② ) : 비연결형 통신에서 주로 사용되는 방식으로, 사전에 접속 절차를 수행하지 않고 헤더에 출발지에서 목적지까지의 경로 지정을 위한 충분한 정보를 붙여서 개별적으로 전달하는 방식이다.
정답:
① 가상 회선 방식
② 데이터 그램 방식
가연비데(연결형, 비연결형)
10. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include
void swap() {
int a = 11;
int b = 19;
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap();
switch(a) {
case 1:
b += 1;
case 11:
b += 2;
default:
b += 3;
break;
}
printf("%d", a-b);
}
정답: -13
void swap() { //swap 함수에 출력하는 것도 없고 main함수에 영향 미치지 않음. a랑 b는 지역 변수이니 swap 함수 끝나면 메모리에서 사라짐
int a = 11;
int b = 19;
int t = a;
a = b;
b = t;
}
int main() {
int a = 11;
int b = 19;
swap();
switch(a) { //a = 11 이므로 case 11로 갑시다
case 1:
b += 1;
case 11:
b += 2; // b + 2 = 19 + 2 = 21;
default:
//case 11에 break문 없어서 default도 계산
b += 3; // b + 3 = 21 + 3 = 24;
break;
}
printf("%d", a-b); //a = 11, b = 24 이므로11 - 24 는 - 13
}
11. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include
#include
void func(char *d, char *s) {
int sum = 0;
while (*s) {
*d = *s;
d++;
s++;
}
*d = '';
}
int main() {
char* str1 = "first";
char str2[50] = "teststring";
int result = 0;
func(str2, str1);
for (int i = 0; str2[i] != ''; i++) {
result += i;
}
printf("%d", result);
return 0;
}
정답: 10
func(str2, str1) 이전 str2 = “teststring”
func(str2, str1) 이후 str2 = “first”
1.
char* str1 = "first"; //문자열 "first"를 가리키는 포인터
char str2[50] = "teststring"; //문자열 "teststring"을 담고 있는 50 크기의 배열
int result = 0;
func(str2, str1);
2.
// s의 문자열을 d로 복사
void func(char *d, char *s) {
int sum = 0;
while (*s) { //s가 가리키는 값이 널 문자(\0)면 종료
*d = *s; //s가 가리키는 문자를 d가 가리키는 위치에 복사
//문자 하나 복사 후 포인터 한 칸씩 증가
d++;
s++;
}
*d = '\0'; // 문자열의 끝
}
//str2가 "first"로 바뀜
3.
for (int i = 0; str2[i] != '\0'; i++) { // str2[i]가 널 문자 될 때까지 반복
result += i; //first의 길이 5. 0~4까지 순회. 0 + 1+ 2+ 3 + 4 = 10
}
4. printf("%d", result); //10 출력
return 0;
12. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
interface Number {
int sum(int[] a, boolean odd);
}
public class Main {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
OENumber OE = new OENumber();
System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
}
}
class OENumber 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
interface Number {
int sum(int[] a, boolean odd);
}
public class Main {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
OENumber OE = new OENumber();
/** OE.sum(a, true) : a의 홀수의 합, 1 + 3 + 5 + 7 + 9 = 25
* OE.sum(a, false) : a의 짝수의 합, 2 + 4 + 6 + 8 = 20
* 결과 값 : 25, 20
* /
System.out.print(OE.sum(a, true) + ", " + OE.sum(a, false));
}
}
class OENumber implements Number {
public int sum(int[] a, boolean odd) {
int result = 0;
for(int i=0; i < a.length; i++) {
/** boolean 값에 따라 홀수와 짝수 중 어느 값을 더할지 결정
* ( odd && a[i] % 2 != 0 ) : odd가 true일 때, 홀수(a[i] % 2 != 0)의 합
* ( !odd && a[i] % 2 == 0 ) : odd가 false일 때, 짝수(a[i] % 2 == 0)의 합
*/
if((odd && a[i] % 2 != 0) || (!odd && a[i] % 2 == 0))
result += a[i];
}
return result;
}
}
13. 다음 라우터 A에서 라우터 F까지 경로를 설정하기 위해 RIP 방식을 사용한다고 할 때, 라우터가 지나가는 경로를 순서대로 쓰시오.(단, 간선 위의 숫자는 라우터 간의 거리를 의미한다.)

답 : A ➝
정답: A ➝ D ➝ C ➝ F
RIP 최단경로 = 홉 수(hop count)가 가장적은 경로로 선택하기 때문에 A → D → C → F 입니다
RIP 최단경로 조건
홉 수가 가장 적어야함
(홉 수 동일하다면)비용이 적어야함
홉 수가 15를 넘기면 불가능한 경로로 판단
14. 아래 설명하는 내용을 확인하여 알맞는 알고리즘을 작성하시오.
- 대칭키 알고리즘으로 1997년 NIST(미국 국립기술표준원)에서 DES를 대체하기 위해 생성되었다.
- 128비트, 192비트 또는 256비트의 가변 키 크기와 128비트의 고정 블록 크기를 사용한다.
- 높은 안전성과 효율성, 속도 등으로 인해 DES 대신 전 세계적으로 많이 사용되고 있다.
정답: AES

#include
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;
}
정답: 21
8 + 9 + 4 = 21
parr[1][1] = 8
*(parr[1]+2) = 9
**parr = 4
arr[3][3]
100번지 | 101번지 | 102번지 |
1 | 2 | 3 |
200번지 | 201번지 | 202번지 |
4 | 5 | 6 |
300번지 | 301번지 | 302번지 |
7 | 8 | 9 |
*parr[2] = {arr[1],arr[2]}
parr[2]는 arr의 200번지와 300번지를 참조한다.
400번지 | 401번지 | 402번지 |
4 | 5 | 6 |
500번지 | 501번지 | 502번지 |
7 | 8 | 9 |
16. 아래의 표를 확인하여 SRT 스케줄링의 평균 대기시간을 계산하여 작성하시오.

정답: 6.5
SRT 스케줄링(Shortest Remaining Time Scheduling)
- 최단 잔여시간을 우선으로 하는 스케줄링
- SJF 선점방식
0 1 5 10 17 26
A | B | D | A | C |
A 대기시간 : 9
B 대기시간 : 0
C 대기시간 : 15
D 대기시간 : 2
( 9 + 0 + 15 + 2 ) / 4 = 6.5
17. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Main {
public static String rf(String str, int index, boolean[] seen) {
if(index < 0) return "";
char c = str.charAt(index);
String result = rf(str, index-1, seen);
if(!seen[c]) {
seen[c] = true;
return c + result;
}
return result;
}
public static void main(String[] args) {
String str = "abacabcd";
int length = str.length();
boolean[] seen = new boolean[256];
System.out.print(rf(str, length-1, seen));
}
}
정답: dcda
전체적인 흐름 설명 :
str 문자열을 뒤에서부터 하나씩(length-1) 읽는다.
이때, 중복되지 않은 문자는 결과에 포함(return c + result;)시키고,
중복된 문자(이미 등장했던 문자)는 포함시키지 않는다. (return result;)
결과 :
str 문자열에서 중복되지 않은 문자를 출력
public static void main(String[] args) {
String str = "abacabcd";
int length = str.length(); // 문자열 길이 : 8
// 중복 여부를 기록할 배열. (길이가 256인 부울 배열 생성. 기본값은 false)
boolean[] seen = new boolean[256];
System.out.print(rf(str, length-1, seen)); //중복되지 않은 문자만 출력 : dcba
}
public static String rf(String str, int index, boolean[] seen) {
if(index < 0) return ""; // index가 -1되면 종료(str의 문자를 다 읽었을 때)
char c = str.charAt(index); // 현재 index에 해당하는 문자
String result = rf(str, index-1, seen); // 재귀호출
if(!seen[c]) { // 문자가 중복이 아닌 경우 ex) seen['d'] == false
seen[c] = true; // 처리한 문자는 true 값으로 변경
return c + result; // 문자 값을 더하여 return
}
return result; // 중복된 문자면 문자 값을 포함하지 않고 return
}
18. 소프트웨어 설계에 대한 다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오.
- 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해, 제어를 통신하거나 제어 요소를 전달하는 결합도이다.
- 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우에 발생한다.
답 : ( ) Coupling
정답: 제어 결합도(Control Coupling)

19. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include
struct node {
int n1;
struct node *n2;
};
int main() {
struct node a = {10, 0};
struct node b = {20, 0};
struct node c = {30, 0};
struct node *head = &a;
a.n2 = &b;
b.n2 = &c;
printf("%d", head -> n2 -> n1);
return 0;
}
정답: 20
head는 &a를 가리키고, head -> n2는 b를, head -> n2 -> n1은 b.n1을 의미

20. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Main {
public static void main(String[] args) {
String str = "ITISTESTSTRING";
String[] result = str.split("T");
System.out.print(result[3]);
}
}
정답: S
result = str 문자열을 T를 기준으로 분리하고, 분리된 문자는 여러개의 문자열 배열로 생성
result[0] = I
result[1] = IS
result[2] = ES
result[3] = S
result[4] = RING
'자격증 > 정처기' 카테고리의 다른 글
[정보처리기사 실기] 2024년 3회 기출문제 풀이 (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 |