정보처리기사 실기(24년 1회 기출복원)

2025. 9. 14. 19:29·이론공부/정보처리기사 실기 기출

출처 : https://chobopark.tistory.com/476

 

[2024년 1회] 정보처리기사 실기 복원 문제

안녕하세요. 2024년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.정보처리기사 개편안인 2020년 시험부터 기출문제

chobopark.tistory.com

1.  다음 Java 코드에서 알맞는 출력 값을 작성하시오.

class Connection {
 
    private static Connection _inst = null;
    private int count = 0;
    
    static public Connection get() {
        if(_inst == null) {
            _inst = new Connection();
            return _inst;
        }
        return _inst;
    }
    
    public void count() {
         count++; 
    }
    
    public int getCount() {
         return count; 
    }
}
 
 
public class main {  
 
    public static void main(String[] args) {
 
        Connection conn1 = Connection.get();
        conn1.count();
 
        Connection conn2 = Connection.get();
        conn2.count();
 
        Connection conn3 = Connection.get();
        conn3.count();
        
        conn1.count();
        System.out.print(conn1.getCount());
    }
 
}
더보기

정답 : 4

 

풀이 : 

_inst는 클래스 내부에 단 하나만 존재하는 인스턴스를 저장

get()메서드는 _inst가 null이면 새로 생성하고 아니면 기존 인스턴스를 반환

즉 conn1, conn2, conn3 모두 같은 인스턴스를 참조

count가 증가됨

2. 다음 C언어 코드에서 알맞는 출력 값을 작성하시오.

#include <stdio.h>
 
int main() {
 
    int v1 = 0, v2 = 35, v3 = 29;
    
    if(v1 > v2 ? v2 : v1) {
        v2 = v2 << 2;
    }else{
        v3 = v3 << 2;
    }
    
    printf("%d", v2+v3);
 
}
더보기

정답 : 151

 

풀이 :

삼항연산자 문제, v1이 v2보다 크면 v2를 작으면 v1을

if(0)이므로 esle문으로 간다

v3 << 2; 쉬프트연산

v3 = 11101

v3 <<2 = 1110100 = 4+16+32+64 = 116

 

v2 + v3 = 151

3. 다음은 응집도와 관련해서 보기에서 응집도가 높은 순으로 나열하시오.

[보기]

ㄱ. 기능             ㄴ. 교환             ㄷ. 우연             ㄹ. 시간
더보기

정답 : ㄱ, ㄴ, ㄹ, ㄷ

 

풀이 :

기능 - 순차 - 통신 - 절차 - 시간 - 논리 - 우연

4. 다음은 C언어에 대한 문제이다. 알맞는 출력 값을 작성하시오.

#include <stdio.h>
#include <string.h>
 
void reverse(char* str){
    int len = strlen(str);
    char temp;
    char*p1 = str;
    char*p2 = str + len - 1;
    while(p1<p2){
        temp = *p1;
        *p1 = *p2;
        *p2 = temp;
        p1++;
        p2--;
    }
}
 
int main(int argc, char* argv[]){
    char str[100] = "ABCDEFGH";
 
    reverse(str);
 
    int len = strlen(str);
 
    for(int i=1; i<len; i+=2){
        printf("%c",str[i]);
    }
 
    printf("\n");
 
    return 0;
 
}
더보기

정답 : GECA

 

풀이 :

reverse(str)

int len = 8

p1 = 0

p2 = 0 + 8 - 1

 

while문

temp = p1

p1 = p2

p2 = temp

p1++

p2--

양끝을 바꿔가면서 진행

p1 *p1 p2 *p2 str
0 A 7 H H(BCDEFG)A
1 B 6 G HG(CDEF)BA
2 C 5 F HGF(DE)CBA
3 D 4 E HGFEDCBA

main.len = 8

 

for문

i = 1부터 2칸씩 증가하며 출력

GECA

5. 아래 그림에서의 네트워크에서 라우터을 통한 할당 가능한  2번, 4번, 5번의 IP를 작성하시오.

 

1) 192.168.35.3/24
3) 129.200.10.16/22
6) 192.168.36.24/24

 

[보기]

192.168.35.0

192.168.35.72

192.168.36.0

192.168.36.249

129.200.8.0

129.200.8.249

더보기

정답 : 

2) 192.168.35.72

4) 129.200.28.249

5) 192.168.36.249

풀이 : 

1) 192.168.35.3/24

네트워크 주소 : 192.168.35.0

브로드캐스트 : 192.168.35.255

사용 가능 범위 : 192.168.35.1 ~ 192.168.35.254

 

3) 129.200.10.6/22

네트워크 주소 : 129.200.8.0

브로드캐스트 : 129.200.11.255

사용 가능 범위 : 129.200.8.1 ~ 129.200.11.254

 

6) 192.168.36.24/24

네트워크 주소 : 192.168.36.0

브로드캐스트 : 192.168.36.255

사용 가능 범위 : 192.168.36.1 ~ 192.168.36.254

6. 아래 표에서 나타나고 있는 정규형을 작성하시오.

고객아이디 강좌명 강사번호
apple 영어회화 P001
banana 기초토익 P002
carrot 영어회화 P001
carrot 기초토익 P004
orange 영어회화 P003
orange 기초토익 P004
더보기

정답 : 제 3정규형

 

풀이 : 

1NF : 원자값만 있으므로[만족]

2NF : 기본키가 복합키지만, 강사번호는 전체 키(고객아이디 + 강좌명)에 종속됨 → 부분 종속 없음[만족]

3NF : 기본키 이외의 속성이 또 다른 속성에 종속되는 경우가 없음[만족]

7. 아래의 내용에서 설명하는 네트워크 용어를 영문 약자로 작성하시오.

1. 대표적인 링크 상태 라우팅 프로토콜이다. 이것은 인터넷에서 연결된 링크의 상태를 감시하여 최적의 경로를 선택한다는것이다.
2. 단일 자율 시스템 내에서 라우팅 정보를 배포하는 데 사용되는 내부 게이트웨이 프로토콜이다.
3. 모든 대상에 도달하기 위한 최단 경로를 구축하고 계산하며 최단 경로는 Dijkstra 알고리즘을 사용하여 계산된다.

더보기

정답 : OSPF

8. 아래 내용의 각각의 설명에 대한 답을 작성하시오.

(1) 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
(2) 조건이 정확하게 '=' 등호로 일치하는 결과를 반환한다. 
(3) ( (2) ) 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환한다.

더보기

정답 : 

(1) - 세타 조인

(2) - 동등 조인

(3) - 자연 조인

 

풀이 : 

  1. 세타 조인(θ-Join) : 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
  2. 동등 조인(Equi Join) : 세타 조인 중 조건이 정확하게 '=' 등호로 일치하는 결과를 반환한다.
  3. 자연 조인(Natural Join) : 동등 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환한다.
  4. 외부 조인(Outer Join) : 조인 조건을 만족하지 않는 튜플도 NULL 값을 포함하여 반환하며, LEFT/RIGHT/FULL 외부 조인으로 구분된다.
  5. 세미 조인(Semi Join) : 한쪽 릴레이션에서 조건을 만족하는 튜플만 반환하고, 다른 릴레이션의 속성은 포함하지 않는다.
  6. 자기 조인(Self Join) : 하나의 릴레이션을 자기 자신과 조인하여 동일 테이블 내에서 관계를 탐색한다.
  7. 카티션 곱(Cartesian Product / Cross Join) : 조건 없이 두 릴레이션의 모든 튜플을 곱집합 형태로 반환한다.

9. 다음은 운영체제 페이지 순서를 참고하여 할당된 프레임의 수가 3개일 때  LRU와 LFU 알고리즘의 페이지 부재 횟수를 작성하시오.

페이지 참조 순서 : 1, 2, 3, 1, 2, 4, 1, 2, 5, 7

(1) LRU : 
(2) LFU : 

더보기

정답 :

(1) LRU - 6

(2) LFU - 6

 

풀이 :

LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지를 교체

페이지 부재 캐시 상태 비고
1 1 [1]  
2 2 [1, 2]  
3 3 [1, 2, 3]  
1 3 [2, 3, 1] 갱신 1
2 3 [3, 1, 2] 갱신 2
4 4 [1, 2, 4] 가장 오래된 3
1 4 [2, 4, 1] 갱신 1
2 4 [4, 1, 2] 갱신 2
5 5 [1, 2, 5] 가장 오래된 4
7 6 [2, 5, 7] 가장 오래된 1

LFU(Least Frequently Used) : 사용 빈도가 낮은 페이지를 교체

페이지 부재 캐시 상태 비고
1 1 [1(1)]  
2 2 [1(1), 2(1)]  
3 3 [1(1), 2(1), 3(1)]  
1 3 [2(1), 3(1), 1(2)] 1 빈도 추가
2 3 [3(1), 1(2), 2(2)] 2 빈도 추가
4 4 [1(2), 2(2), 4(1)] 3 교체
1 4 [2(2), 4(1), 1(3)] 1 빈도 추가
2 4 [4(1), 1(3), 2(3)] 2 빈도 추가
5 5 [1(3), 2(3), 5(1)] 4 교체
7 6 [1(3), 2(3), 6(1)] 5 교체

 

10. 아래 JAVA언어 코드의 실행 순서를 중복 번호없이 작성하시오.

실행 순서 : 5 → ( ) → ( ) → ( ) → ( ) → ( )

class Parent {
    int x, y;
 
    Parent(int x, int y) { ①
        this.x=x;
        this y=y;
    }
 
    int getT() { ②
        return x*y;
    }
}
 
 
 
​class Child extend Parent {
    int x;
 
    Child (int x) { ③
        super(x+1, x);
        this.x=x;
    }
 
    int getT(int n){ ④
        return super.getT()+n;
    }
}
 
 
 
class Main {
    public static void main(String[] args) { ⑤
        Parent parent = new Child(3); ⑥
        System.out.println(parent.getT()); ⑦
    }
}
더보기

정답 : 6 3 1 7 2

 

풀이 : 

5 main() 실행 시작

6 new Child(3) 호출

3 Child(3) 실행, super(4, 3) 호출,

1 super(4, 3)인 Parent(4, 3) 실행, Child 본문 진행 this.x = 3

7 출력문 진행, parent.getT() 호출

2 Child에는 getT(int n) 뿐이므로 Parent의 getT() 호출

11. 다음 C언어의 알맞는 출력값을 작성하시오.

#include <stdio.h>
 
typedef struct{
    int accNum;
    double bal;
}BankAcc;
 
double sim_pow(double base, int year){
    int i;
    double r = 1.0;
 
    for(i=0; i<year; i++){
        r = r*base;
    }
    return r;
} 
 
void initAcc(BankAcc *acc, int x, double y){
    acc -> accNum = x;
    acc -> bal = y;
}
 
void xxx(BankAcc *acc, double *en){
    if (*en > 0 && *en < acc -> bal) {
        acc -> bal = acc -> bal-*en;
    }else{
        acc -> bal = acc -> bal+*en;
    }
}
 
void yyy(BankAcc *acc){
    acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}
 
int main(){
    BankAcc myAcc;
    initAcc(&myAcc, 9981, 2200.0);
    double amount = 100.0;
    xxx(&myAcc, &amount);
    yyy(&myAcc);
    printf("%d and %.2f", myAcc.accNum, myAcc.bal);
    return 0;
 
}
더보기

정답 : 9981 and 2795.10

 

풀이 : 

initAcc(*myAcc, 9981, 2200.0) 실행

myAcc(9981, 2200.0)

 

xxx(&myAcc, &amount) 실행

if(*en > 0 && *en < acc → bal) → true

*en = 100.0, acc → bal = 2200.0

acc → bal = acc → bal - * en = 2200.0 - 100.0 = 2100.0

myAcc(9981, 2100.0)

 

yyy(&myAcc) 실행

acc → bal  = acc → bal * sin_pow((1+0.1),3) = 2795.1

 

sin_pow((1+0.1),3) 호출

for문 실행

i r r*base
0 1.0 1.0*1.1 = 1.1
1 1.1 1.1*1.1 = 1.21
2 1.21 1.21*1.1 = 1.331

 

출력문 실행

%d 정수값 출력

%.2f 소수점 2째자리까지 출력(반올림)

9981 and 2795.10

12. 다음 파이썬 코드에 대한 알맞는 출력 값을 작성하시오.

a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"] 
str = "S"
 
for i in a:
    str = str + i[1]
 
print(str)
더보기

정답 : Seynaau

 

풀이 : a를 순회하며 각 글자의 1번 인덱스(2번째 글자)를 S뒤에 추가

13. 아래 보기의 SQL 문장과 테이블을 참고하여 출력 값을 표로 작성하시오.

SELECT
    B
FROM
    R1
WHERE
    C IN (SELECT C FROM R2 WHERE D="k");

 

[보기]

더보기

정답 : 

B
a
b

풀이 : 

WHERE문의 서브 쿼리를 먼저 해석

SELECT C FROM R2 WHERE D="k"

R2의 D가 k인 값의 C를 출력 → x, y

 

R1에 C가 x또는 y인 B 출력 → a, b

14. 아래는 애플리케이션 테스트 관리에 대한 내용이다. 설명하는 답을 보기에서 골라 작성하시오.

1. 모든 분기와 조건의 조합을 고려하나 모든 조합을 테스트하는 대신에 테스트가 필요한 중요한 조합을 찾아내는데에 중점을 둔다. 
2. 특정 조건을 수행할 때 다른 조건과는 상관없이 전체 결과에 영향을 미치는 조건만을 테스트한다. 
3. 각각의 파라미터는 적어도 한 번은 최종 결과에 영향을 주어야 한다.

 

[보기]

ㄱ. 구문 커버리지      ㄴ. 결정 커버리지    ㄷ. 조건 커버리지    ㄹ. 변경 조건/결정 커버리지

ㅁ.다중 조건 커버리지      ㅂ.경로 커버리지    ㅅ.조건/결정 커버리지

더보기

정답 : ㄹ. 변경 조건/결정 커버리지

15. 다음 아래 내용을 보고  보기에서 알맞는 용어를 골라 작성하시오.

인터넷 공격자의 존재를 숨기면서 이 공격자에게 시스템에 대한 무제한 접근 권한을 부여하는 악성 프로그램이다.
해커가 자신의 존재를 숨기면서 허가되지 않은 컴퓨터나 소프트웨어에 접근할 수 있도록 설계된 도구이다.
일반적으로 펌웨어, 가상화 계층 등의 다양한 시스템 영역에서 작동하며, 운영체제의 시스템콜을 해킹하여 악성코드의 실행여부를 숨겨 안티바이러스 탐지를 우회할 수 있다.

 

[보기]

ㄱ.Worm    ㄴ.Trojan horse    ㄷ.Backdoor     ㄹ.Virus     ㅁ.Ransomware      ㅂ.Spyware     ㅅ.Rootkit
더보기

정답 : ㅅ

16. 다음 Java 코드를 보고 알맞는 출력 값을 작성하시오.

class classOne {
    int a, b;
 
    public classOne(int a, int b) {
        this.a = a;
        this.b = b;
    }
 
    public void print() {
        System.out.println(a + b);
    }
 
}
class classTwo extends classOne {
    int po = 3;
    
    public classTwo(int i) {
        super(i, i+1);
    }
 
    public void print() {
        System.out.println(po*po);
    }
}
 
public class main {  
    public static void main(String[] args) {
        classOne one = new classTwo(10);
        one.print();
    }
}
더보기

정답 : 9

 

풀이 : 

new classTwo(10) 호출

super(i, i+1) → classOne(int a, int b) 호출

classOne(10, 11) → 정답과 무관

one.print() → classTwo.print() 호출

po = 3, po*po = 9

17. 다음 아래 내용을 보고  보기에서 알맞는 용어를 골라 작성하시오.

1. 불특정 다수가 아닌 명확한 표적을 정하여 지속적인 정보수집 후 공격감행할 수 있다.
2. 시스템에 직접 침투하는 것뿐 아니라 표적 내부직원들이 이용하는 다양한 단말을 대상으로 한다.
3. 한가지 기술만이 아닌 Zero-day 취약점, 악성코드 등 다양한 보안 위협 공격 기술을 사용한다.
4. 일반적으로 공격은 침투, 검색, 수집 및 유출의 4단계로 실행되며, 각 단계별로 다양한 공격 기술을 사용한다.

[보기]

ㄱ.사회공학 기법     ㄴ.Adware     ㄷ.MITM      ㄹ.XDR     ㅁ.Replace attack      ㅂ.key logger attack     ㅅ.APT
더보기

정답 : ㅅ

18. 아래의 SQL 코드와 테이블을 참고하여 결과 값을 작성하시오.

SELECT 
    COUNT(*) 
FROM 
    TABLE 
WHERE 
    EMPNO > 100 
AND 
    SAL >= 3000 OR EMPNO = 200
더보기

정답 : 1

 

풀이 : 

EMPNO > 100 → 200, 300

SAL >= 3000 → 200

OR EMPNO = 200 → 3000

19. 다음 C언어 코드의 알맞는 출력 값을 작성하시오.

#include<stdio.h>
#include<ctype.h>
 
int main(){
    char*p = "It is 8";
    char result[100];
    int i;
 
    for(i=0; p[i]!='\0'; i++){
        if(isupper(p[i]))
            result[i] = (p[i]-'A'+5)% 25 + 'A';
        else if(islower(p[i]))
            result[i] = (p[i]-'a'+10)% 26 + 'a';
        else if(isdigit(p[i]))
            result[i] = (p[i]-'0'+3)% 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;
}
더보기

정답 : Nd sc 1

 

풀이 :

if의 경우는

1. 대문자인경우 → I

2. 소문자인경우 → t, i, s

3. 숫자인경우 → 8

4. 모두 아닌경우 → " ", " "

 

아스키 값을 모르더라도 a,A를 0으로 기준

0 1 2 3 4 5 6 7 8 9
a b c d e f g h i j
10 11 12 13 14 15 16 17 18 19
k l m n o p q r s t
20 21 22 23 24 25        
u v w x y z        

대문자인 경우

I(8) → (8 - 0 + 5) % 25 = 13 = N

 

소문자인 경우

t(19) → (19 - 0 + 10) % 26 = 3 = d

i(8) → (8 - 0 + 10) % 26 = 18 = s

s(18) → (18 - 0 + 10) % 26 = 2 = c

 

숫자인 8은

(8 + 3) % 10 = 1

 

공백은 그대로

result = [N, d, " ", s, c, " ", 1]

 

출력하면

Nd sc 1

20. 다음 아래의 내용을 보고 알맞는 용어를 작성하시오. 

구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다.
연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다
관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하다.
kit라고도 불린다.

더보기

정답 : Abstract Factory

'이론공부 > 정보처리기사 실기 기출' 카테고리의 다른 글

정보처리기사 실기(23년 2회 기출복원)  (0) 2025.09.17
정보처리기사 실기(23년 3회 기출복원)  (0) 2025.09.16
정보처리기사 실기(24년 2회 기출복원)  (0) 2025.09.14
정보처리기사 실기(24년 3회 기출복원)  (0) 2025.09.13
정보처리기사 실기(25년 2회 기출복원)  (0) 2025.09.11
'이론공부/정보처리기사 실기 기출' 카테고리의 다른 글
  • 정보처리기사 실기(23년 2회 기출복원)
  • 정보처리기사 실기(23년 3회 기출복원)
  • 정보처리기사 실기(24년 2회 기출복원)
  • 정보처리기사 실기(24년 3회 기출복원)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부
        • 개념
        • 정보처리기사 필기
        • 정보처리기사 실기 기출
        • 네트워크관리사 2급
        • SQLD
      • 시스템설계
      • Java & Spring N
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring N
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • 웹
      • git & github
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스 java 기초 트레이닝
    java 에라토스테네스의 체
    java super
    java 유클리드 호제법
    java arrays.copyofrnage()
    데이터 크기
    java enhance switch
    java기초
    데이터 타입
    프로그래머스 java 기초트레이닝
    Java this
    java 세수의합
    java two-pointer
    개발로드맵
    java 메서드
    자료구조
    java
    java 제어자
    Java 생성자
    java 멤버
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
정보처리기사 실기(24년 1회 기출복원)
상단으로

티스토리툴바