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

2025. 9. 13. 21:07·이론공부/정보처리기사 실기 기출

1. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

public class Main{
  static String[] s = new String[3];
 
  static void func(String[]s, int size){
    for(int i=1; i<size; i++){
      if(s[i-1].equals(s[i])){
        System.out.print("O");
      }else{
        System.out.print("N");
      }
    }
      for (String m : s){
        System.out.print(m);
      }
    }
  
 
  public static void main(String[] args){
    s[0] = "A";
    s[1] = "A";
    s[2] = new String("A");
 
    func(s, 3);
  }
}
더보기

정답 : OOAAA

 

풀이 : 

String s = { "A", "A", "A" };

s[0], s[1]은 String Pool에 저장된 리터럴 문자열을 가리킴

s[2]는 heap영역에 새로운 String 객체를 생성

 

func(s, 3) 호출

s를 순회하면서 다음 인덱스의 값과 .equals 여부 확인

※ .equals는 내용(문자열 값)을 비교하는 함수

※ ==은 같은 메모리 주소를 가리키는지 확인

 

s[0], s[1], s[2]모두 .equals로 서로 비교 시 모두 true이므로, i = 1, i = 2 두번 순회

OO 출력

1번째 for문이 끝나고

2번째 for문에서 a의 값들을 하나씩 출력

AAA출력

2. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

def func(lst):
  for i in range(len(lst) //2):
    lst[i], lst[-i-1] = lst[-i-1], lst[i]
 
lst = [1,2,3,4,5,6] 
func(lst)
print(sum(lst[::2]) - sum(lst[1::2]))
더보기

정답 : 3

 

풀이 : 

func() 호출

lst 반까지만 순회, lst.legtnh = 6

그러므로 0, 1, 2 인덱스 까지 진행

맨 앞과 맨 뒤 요소를 교환

1 = 6, 6 = 1

2 = 5, 5 = 2

3 = 4, 4 = 3

lst = [6, 5, 4, 3, 2, 1]

 

lst[start : stop : step]

sum(lst[::2]) → 처음부터 2칸 간격으로 합산 0, 2, 4 → 6 + 4 + 2 = 12

sum(lst[1::2]) → 1부터 2칸 간격으로 합산 1, 3, 5 → 5 + 3 + 1 = 9

12 - 9 = 3

3. 아래의 employee테이블과 project테이블을 참고하여 보기의 SQL명령어에 알맞는 출력 값을 작성하시오.

[보기]

SELECT 
    count(*) 
FROM employee AS e JOIN project AS p ON e.project_id = p.project_id 
WHERE p.name IN (
    SELECT name FROM project p WHERE p.project_id IN (
        SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2
    )
);
더보기

정답 : 1

 

풀이 : 

SELECT  count(*)

→ 결과 값의 갯수를 출력

FROM employee AS e JOIN project AS p ON e.project_id = p.project_id

→ 위 두 테이블을 project_id로 JOIN

WHERE p.name IN(서브쿼리1)

→ p.name이 서브 쿼리의 조건에 맞는 경우를 필터링

(서브쿼리1) SELECT name FROM project p WHERE p.project_id IN(서브쿼리2)

→ project_id가 서브쿼리2 조건에 맞는 경우를 필터링해서 name을 필터링

(서브쿼리2) SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2

→ project_id로 그룹핑하고 그 숫자가 2보다 작은 경우의 project_id 출력

 

이제 역순으로 돌아가보면

서브쿼리2 → 20 출력

서브쿼리1 → Beta 출력

WHERE문 → p.name이 Beta인 employee는 no 2인 1명

SELECT count(*) → 1 출력

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

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

더보기

정답 : 12

 

풀이 :

LRU(Least Rencetly Used) : 가장 오래 사용하지않은 데이터 제거

데이터 페이지 부재 발생 부재 횟수 비고
7 [7, x, x] O 1  
0 [7, 0, x] O 2  
1 [7, 0, 1] O 3  
2 [2, 0, 1] O 4 가장 먼저 들어온 7 제거
0 [2, 1, 0] X 4 0을 최근 사용으로 이동
3 [1, 0, 3] O 5  
0 [1, 3, 0] X 5 0을 최근 사용으로 이동
4 [1, 0, 4] O 6  
2 [0, 4, 2] O 7  
3 [4, 2, 3] O 8  
0 [2, 3, 0] O 9  
3 [2, 0, 3] X 9 3을 최근 사용으로 이동
2 [0, 3, 2] X 9 2를 최근 사용으로 이동
1 [3, 2, 1] O 10  
2 [3, 1, 2] X 10 2를 최근 사용으로 이동
0 [1, 2, 0] O 11  
1 [2, 0, 1] X 11 1을 최근 사용으로 이동
7 [0, 1, 7] O 12  
0 [1, 7, 0] X 12 0을 최근 사용으로 이동
1 [7, 0, 1] X 12 1을 최근 사용으로 이동

 

5. 다음은 네트워크 취약점에 대한 문제이다. 아래 내용을 보고 알맞는 용어를 작성하시오.

 - IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크의 일부를 불능 상태로 만드는 공격이다.
 - 여러 호스트가 특정 대상에게 다량의 ICMP Echo Reply 를 보내게 하여 서비스거부(DoS)를 유발시키는 보안공격이다.
 - 공격 대상 호스트는 다량으로 유입되는 패킷으로 인해 서비스 불능 상태에 빠진다.

더보기

정답 : 스머프(Smurf) 또는 스머핑(Smurfing)

6. 다음은 GoF 디자인 패턴과 관련된 문제이다. 괄호안에 알맞는 용어를 작성하시오.

(        ) 패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴이다.
(        ) 패턴은 객체들 간의 통신 방법을 정의하고 알고리즘을 캡슐화하여 객체 간의 결합도를 낮춘다.
(        ) 패턴은 Chain of Responsibility나 Command 또는 Observer 패턴이 있다.

더보기

정답 : 행위

7. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>
 
int func(){
 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+=func();
  } 
  printf("%d", sum);
 
  return 0;
}
더보기

정답 : 20

 

풀이 : 

fun() 내 x는 static변수로 최초 호출 시 한번만 초기화 그후 누적됨

만약 static이 없으면 매번 0으로 초기화 func()는 매번 2를 반환하게됨

i main.x func().x sum
0 2 2 2
1 3 4 6
2 4 6 12
3 5 8 20

 

8. 다음은 무결성제약조건에 대한 문제이다. 아래 표에서 어떠한 (       ) 무결성을 위반하였는지 작성하시오. 

더보기

정답 : 개체

 

풀이 : 

- 개체 무결성 : 모든 릴레이션의 기본키는 NULL이거나 중복 될 수 없다.

- 참조 무결성 : 외래키는 NULL이거나, 참조하는 테이블의 기본키 값과 동일해야한다.

- 도에인 무결성 : 속성의 값은 정의된 도메인을 따라야한다.

9. 다음은 URL 구조에 관한 문제이다 . 아래  보기의 순서대로 URL에 해당하는 번호를 작성하시오.

[보기]

query : 서버에 전달할 추가 데이터
path : 서버 내의 특정 자원을 가리키는 경로

scheme : 리소스에 접근하는 방법이나 프로토콜

authority : 사용자 정보, 호스트명, 포트 번호

fragment : 특정 문서 내의 위치

더보기

정답 : 43125

 

풀이 : 

프로토콜://호스트:포트/경로?쿼리#프래그먼트

번호 부분 설명
(1) 프로토콜 (Scheme) 웹에서 사용하는 통신 규약 (예: http, https, ftp)
(2) 호스트 (Host, Domain, Authority) 서버 주소 (예: www.example.com, 192.168.0.1)
포트 번호 (Port) 생략 가능, http=80, https=443 같은 기본 포트 사용
(3) 경로 (Path) 서버에서 요청하는 리소스의 위치 (예: /user/login)
(4) 쿼리 문자열 (Query String) ? 뒤에 오는 추가 데이터 (예: ?id=1&name=kim)
(5) 프래그먼트 (Fragment) # 뒤의 문서 내부 위치 (예: #section2)

10. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

def func(value):
    if type(value) == type(100):
        return 100
    elif type(value) == type(""):
        return len(value) 
    else:
        return 20
 
 
a = '100.0'
b = 100.0
c = (100, 200)
 
print(func(a) + func(b) + func(c))
더보기

정답 : 45

 

풀이 : 

a는 문자열(str)

b는 실수(float)

c는 튜플(tuple)

첫번째 if는 정수(int)인지

두번째 if는 문자열(str)인지

 

func(a) = 5

func(b) = 20

func(c) = 20

11. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

public class Main{
  public static void main(String[] args){
    Base a =  new Derivate();
    Derivate b = new Derivate();
    
    System.out.print(a.getX() + a.x + b.getX() + b.x);
  }
}
 
 
class Base{
  int x = 3;
 
  int getX(){
     return x * 2; 
  }
}
 
class Derivate extends Base{
  int x = 7;
  
  int getX(){
     return x * 3;
  }
}
더보기

정답 : 52

 

풀이 : 

a.getX() : 메서드 오버라이딩 규칙에 따라 실제 객체 타입(Derivate)의 메서드 호출

→ 21

a.x : 변수는 오버라이딩 되지 않았으므로 선언된 타입(Base) 기준으로 접근

→ 3

b.getX() : Derivate.getX() 실행

→ 21

b.x : Derivate의 x

→ 7

12. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#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 n1 = {1, NULL}; ~ n3

Node 구조체 생성

n1.next = &n3;

n3.next = &n2;

n1(1)→n3(3)→n2(2)→NULL 연결리스트 생성

 

func(&n1); 호출

int t = 1

node → value = node → next → value;

→ 현재 노드의 value 값을 다음 노드의 value값으로 변경

node → next → value = t;

→ 다음 노드의 value 값을 현재 값으로 변경

n1(3)→n3(1)→n2(2)→NULL

→ 노드를 한칸 건너 뛰고 나음으로 이동 n1 → n2, n2 → next == NULL 이므로 반복문 종료

 

struct Node* current = &n1;

노드 포인터를 n1으로 이동

연결리스트의 value값 출력

13. 다음은 테스트 커버리지에 대한 문제이다. 아래 내용에 알맞는 답을 보기에서 골라 작성하시오.

1. 테스트를 통해 프로그램의 모든 문장을 최소한 한 번씩 실행했는지를 측정
2. 프로그램 내의 모든 분기(조건문)의 각 분기를 최소한 한 번씩 실행했는지를 측정
3. 복합 조건 내의 각 개별 조건이 참과 거짓으로 평가되는 경우를 모두 테스트했는지를 측정

 

[보기]

ㄱ. 조건    ㄴ. 경로    ㄷ. 결정    ㄹ. 분기    ㅁ.함수    ㅂ. 문장    ㅅ. 루프

더보기

정답 :

1 - ㅂ.문장

2 - ㄹ.분기

3 - ㄱ.조건

14.아래는 UML클래스의 관계에 관한 문제이다. 보기를 보고 알맞는 관계를 선택하여 작성하시오.

[보기]

ㄱ. 의존         ㄴ. 연관         ㄷ. 일반화    

더보기

정답 : 

(1) - 연관

(2) - 일반화

(3) - 의존

15. 다음은 데이터베이스에 관한 문제이다. 아래 내용을 읽고 알맞는 답을 보기에서 찾아 골라 작성하시오.

(1) 다른 테이블, 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합
(2) 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
(3) 후보 키 중에서 선정된 기본 키를 제외한 나머지 후보 키
(4) 테이블에서 각 행을 유일하게 식별할 수 있는 속성들의 집합

[보기]
ㄱ. 슈퍼키    ㄴ. 외래키    ㄷ. 대체키    ㄹ. 후보키

더보기

정답 : 

(1) - ㄴ.외래키

(2) - ㄹ.후보키

(3) - ㄷ.대체키

(4) - ㄱ.슈퍼키

16. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>
 
void func(int** arr, int size){
  for(int i=0; i<size; i++){
     *(*arr + i) = (*(*arr + i) + i) % size;
  }
}
 
int main(){
  int arr[] = {3, 1, 4, 1, 5};
  int* p = arr;
  int** pp = &p;
  int num = 6;
  
  func(pp, 5);  
  num = arr[2];
  printf("%d", num);  
 
  return 0;
}
더보기

정답 : 1

 

풀이 : 

func(pp, 5) 호출

 

i *arr + i *(*arr + i) (*(*arr + i) + i) (*(*arr + i) + i) % size
0 0 arr[0] arr[0] + 0 = 3 3
1 1 arr[1] arr[1] + 1 = 2 2
2 2 arr[2] arr[2] + 2 = 6 1
3 3 arr[3] arr[3] + 3 = 4 4
4 4 arr[4] arr[4] + 4 = 9 4

arr[] = {3, 2, 1, 4, 4}

arr[2] = 1

17. 다음 아래 내용을 보고 알맞는 용어를 작성하시오. (3글자로 작성)

 - 공용 네트워크를 통해 사설 네트워크를 확장하는 기술이다.
 - 사용자의 IP 주소를 숨기고, 사용자가 어디에서 접속하는지를 추적하기 어렵게 만든다.
 - 종류로는 IPsec 또는 SSL, L2TP 등이 있다.

더보기

정답 : VPN

18. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

public class ExceptionHandling {
  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

 

풀이 : 

try-catch-finally문 실행

func() 호출 → NullPointerException() 발생

첫번째 catch문 실행

sum = 1

첫번째 catch문에서 처리되기 때문에 두번째 catch문은 실행안됨

finally문 실행

sum = 101

sum출력 101

19. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

class Main {
 
  public static class Collection<T>{
    T value;
 
    public Collection(T t){
        value = t;
    }
 
    public void print(){
       new Printer().print(value);
    }
 
   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 static void main(String[] args) {
      new Collection<>(0).print();
  }
  
}
더보기

정답 : B0

 

풀이 : 

new Collection<>(0).print();

 

  • 여기서 Printer는 내부 클래스이고, 제네릭 외부 클래스 Collection<T>의 타입 파라미터 T를 알고 있어야 한다
  • value의 타입은 T로 선언돼 있다.
  • 하지만 컴파일 시점에서 Java는 오버로딩 결정을 정적 타입 기준으로한다.
  • Printer.print() 호출 시 컴파일러가 보는 타입은 T이지, 실제 런타임 값(Integer)이 아니다

 

20. 다음은 네트워크에 대한 문제이다.  아래 내용을 보고 알맞는 용어를 작성하시오. 

 - 중앙 관리나 고정된 인프라 없이 임시로 구성되는 네트워크이다. 
 - 일반적으로 무선 통신을 통해 노드들이 직접 연결되어 데이터를 주고받는다.
 - 긴급 구조, 긴급 회의, 군사적인 상황 등에서 유용하게 활용될 수 있다.

 

[보기]
ㄱ.Infrastructure Network    ㄴ. Firmware Network    ㄷ. Peer-to-Peer Network

ㄹ. Ad-hoc Network    ㅁ. Mesh Network    ㅂ.Sensor Network    ㅅ.Virtual Private Network

 

더보기

정답 : ㄹ. Ad-hoc Network

 

풀이 :

 

  • ㄱ. Infrastructure Network → 고정된 인프라를 전제로 하는 네트워크, 해당 아님.
  • ㄴ. Firmware Network → 네트워크 용어가 아님.
  • ㄷ. Peer-to-Peer Network → 일반적인 P2P는 파일 공유나 분산 통신을 의미, 임시 구성과는 다름.
  • ㄹ. Ad-hoc Network → 임시로 구성되며 중앙 장치 없이 무선으로 직접 연결되는 네트워크. 긴급 상황에서 사용 가능.
  • ㅁ. Mesh Network → 각 노드가 다중 경로로 연결되는 구조, 반드시 임시 네트워크를 의미하지는 않음.
  • ㅂ. Sensor Network → 센서 장치들의 네트워크, 특정 목적용이지 일반적인 ad-hoc 개념은 아님.
  • ㅅ. Virtual Private Network (VPN) → 가상 사설망, 임시 구성과 무관.

 

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

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

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바