자격증 요약/정보처리기사

[24년 3회] 정보처리기사 실기 문제 풀이

문성 2026. 2. 24. 11:00

 


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
                               

※ 자바(JAVA)에서 문자열(String) 은 리터럴 사용 시 공용 주소 재사용
예. String str1 = 'Programming'; String str2 = 'Programming'; String str3 = new String('Programming')
→ str2 는 str1 과 같은 주소가 됨.
→ str3 은 new 가 붙었으므로, 무조건 새로운 주소로 만들어짐

※ 자바(JAVA)에서 배열(int[ ]) 은 무조건 새 주소로 생성
예. int[] a = new int[]{1, 2, 3, 4}; int[] b = new int[]{1, 2, 3, 4}; int[] c = new int[]{1, 2, 3};
→ 전부 다른 주소에 저장된다.
→ 자바(JAVA)에서 배열의 주소를 비교(==)하는 것은 전부다 거짓
→ 안의 내용물을 비교하려면, Arrays.equlas(a, b)를 써야함.
(※ a.equals(b) 를 써도 배열은 주소를 비교하는 경우가 있음)
                               

 

 

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
                               
※lst[초기값:끝값:증감값]

 

 

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
   WHERE project_id IN(
      SELECT project_id
      FROM employee
      GROUP BY project_id
      HAVING COUNT(*) < 2
답: 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

 

 

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
                               

※ main( ) 의 x : 지역변수
 → 스택(Stack)라는 구역에 존재, 함수가 실행될 때 잠깐 생겼다가. 함수가 끝나면 사라짐. '임시 거처'
 → 메인 함수 안에서만 통하는 x

func( ) 의 static int x : 정적 변수
 → 데이터(Date/Static)라는 구역에 존재. 프로그램이 시작될 때 만들어져서 끝날 떄까지 유지됨. '영구 거처'
                               

 

 

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

답: 개체

 

 

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

[보기] 
query : 서버에 전달할 추가 데이터
path : 서버 내의 특정 자원을 가리키는 경로
scheme : 리소스에 접근하는 방법이나 프로토콜
authority :사용자정보, 호스트명, 포트번호
fragment : 특정 문서 내의 위치
답: 43125

 

 

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
                               

데이터 타입(형태) 구분하는 문제
if type(value) == type(100):
        return 100
type(100) : 정수(int)인가?

    elif type(value) == type(""):
        return len(value)
type("") : 문자열(str)인가?

    else:
        return 20
                               

a = '100.0'
→ 문자열(str)
→ len('100.0') = 5
※(1 0 0 . 0) = 5글자
※작은따옴표(' ') 또는 큰따옴표(" ")로 감싸져있으면 문자열(str)


b = 100.0
→ 실수(float)
※소숫점이므로 실수이다. 정수였으면, 100 이렇게 표현됐어야한다.
→ return 20

c = (100, 200)
→ 튜플(tuple)
→ return 20

print(func(a) + func(b) + func(c))
5 + 20 +20
= 45

 

 

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
                               

 

 

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
                               

 

 

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 = 10;
    func(pp, 5);
    num = arr[2]
    printf("%d", num);
    return 0;
}
답: 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
                               

                               

※ 만약 catch (NullPointerException e) 블록이 없었다면, 그 다음으로 넓은 범위의 부모 클래스가 예외를 대신 수습함.
Exception 은 모든 예외의 대장

NullPointerExecption 은 특정 문제만 담당하는 말단 직원
→ 전용 처리반 NullPointerExecption 이 없으면 비상 상황은 상위 책임자인 Exception 으로 간다.

NullPointerExecption 블록이 없다면,
func( ) 에서 예외가 발생
main의 첫 번째 catch를 보는데, 받아 줄 NullPointerExecption 가 없음
→ 다음 칸에 catch (Exception e)가 있음
→ 모든 예외를 받을 수 있으므로 sum = sum + 10 이 실행 됨.
→ 그리고 finally 가 실행 됨

만약 catch 가 하나도 없었다면, finally가 실행되고 프로그램이 강제로 종료된다.
그러므로 System.out.print 가 실행되지 않는다.

 

 

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
                               


 

 

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

- 중앙 관리나 고정된 인프라 없이 임시로 구성되는 네트워크이다.
- 일반적으로 무선 통신을 통해 노드들이 직접 연결되어 데이터를 주고받는다.
- 긴급 구조, 긴급 회의, 군사적인 상황 등에서 유용하게 활용될 수 있다.
[보기] ㄱ.Infrastructure Network  ㄴ.Firmware Network  ㄷ.Peer-to-Peer Network  ㄹ.Ad-hoc Network 
ㅁ.Mesh Network  ㅂ.Sensor Network  ㅅ.Virtual Private Network
답: ㄹ. Ad-hoc Network