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

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

문성 2026. 2. 26. 07:00


1. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

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

class Connection {
    private static Connection _inst = null;
private : 해당 클래스 내부에서만 볼 수 있고, 수정할 수 있음.
static : 모든 Connection 객체가 공유하는 단 하나뿐인 값
public : 어떤 클래스에서든 자유롭게 부르고 사용할 수 있음

                               

 

 

2. 다음은 정보 보호 기술인 AAA에 대한 설명이다. 각 설명에 맞는 답을 고르시오

(1) 시스템을 접근하기 전에 접근 시도하는 사용자의 신원을 검증
(2) 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용
(3) 사용자의 자원(시간,정보,위치 등)에 대한 사용 정보를 수집
[보기] Authentication, Authorization, Accounting
답: (1) Authentication  (2) Authorization  (3) Accounting

 

 

3. Grant의 기능에 대해 간략하게 약술하시오. 

답: 사용자(User)에게 접속권한, 오브젝트 생성권한, DBA 권한 등을 부여할 수 있는 명령어

 

 

4. 다음 중, 설명에 대한 괄호( ) 안에 들어가는 내용에 대해 작성하시오.

(     ) 스푸핑은 근거리 통신망 하에서 (     ) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 (     )를 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다.
답: ARP

 

 

5. 다음은 Coupling에 대한 설명이다. 설명에 대한 Coupling 종류를 영문으로 작성하시오.

- 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
- 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생
답: control

 

 

6. OSI 7 Layer의 설명으로 해당되는 설명의 답을 작성하시오.

( 1 ) 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
( 2 ) 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
( 3 ) 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
답: (1) 데이터링크  (2) 네트워크  (3) 표현

 

 

7. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

눈에 보이지 않는 것을 개념적으로 표현하는 것이 '추상화'라하며, 
이는 실세계의 복잡한 상황을 간결하고 명확하게 개념화(槪念化)하는 것이다.
(  1  )은 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고,  
(  2  )은 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
답: (1) Aggregation  (2) Generalization

 

 

8. 다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

답: (1) 테스트 조건  (2) 테스트 데이터  (3) 예상 결과

 

 

9. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

(     ) 통해 요구사항 명세를 입력 조건과 출력 조건 간의 논리적 관계로 표현하고, 이를 기반으로 테스트케이스를 도출한다.
(     )의 ‘원인(causes)’은 입력 조건을 의미하고 ‘결과(effects)’는 입력 조건의 결과를 의미하며, 원인과 결과 간의 논리적 관계를 AND, OR, NOT 같은 boolean 연산자를 사용하여 표현한다.
답: cause effect graph

 

 

10. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

(     )는 블록 암호의 일종으로, 미국 NBS (National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호이다. 
(     )는 64비트 평문을 64비트 암호문으로 암호화하는 대칭키 암호 알고리즘이다.
(     )의 키는 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트이다.
답: DES

 

 

11. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

public class testco {
    public static void main(String[] args) {
        int a = 3, b = 4, c = 3, d = 5;
        if ( (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d) ) {
            a = b + c;
            if (7 == b ^ c != a) {
                System.out.println(a);
            } else {
                System.out.println(b);
            }
        } else {
            a = c + d;
            if (7 == c ^ d != a) {
                System.out.println(a);
            } else {
                System.out.println(d);
            }
        }
    }
}
답: 7
                               

public class testco {
    public static void main(String[] args) {
        int a = 3, b = 4, c = 3, d = 5;
→ 변수 정의

        if ( (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d) ) {
→ 위에서 정의된 숫자를 넣은 후, 왼쪽부터 값을 풀어가면 된다.
※ 거짓은 0, 참은 1 (※0을 제외한 다른 모든 숫자는 참이다.)
| : or, 둘 중 하나만 참이어도 참
&  : and, 둘 다 참이어야 참
! : 값 반전(거짓 → 참)

^ : 두 값이 다르면 참

→ (3 == 2 | 3 == 3& !(3>5) & (1 == 4 ^ 3 != 5)
→ (거짓 | ) & !(거짓) & (거짓 ^ )
() & () & ()
→ 참
                               

            a = b + c;
→ 참이므로 실행된다.
→ a = 4 + 3
→ a는 이제부터 7이다.

            if (7 == b ^ c != a) {
→ (7 == 4 ^ 3 != 7)
→ (거짓) ^ (참)
→ (참)

                System.out.println(a);
→ 참이므로 a 값 출력된다.
→ 7 값 출력
                               

→ 이 아래로는 거짓이었을 때 실행되므로, 코드는 여기서 종료

            } else {
                System.out.println(b);
            }
        } else {
            a = c + d;
            if (7 == c ^ d != a) {
                System.out.println(a);
            } else {
                System.out.println(d);

 

 

12. 다음 C언어에 대한 알맞는 출력값을 쓰시오.

#include <stdio.h>
int main() {
    int *arr[3];
    int a = 12, b = 24, c = 36;
    arr[0] = &a;
    arr[1] = &b;
    arr[2] = &c;
    printf("%d\n", *arr[1] + **arr + 1);
    return 0;
}
답: 37
                               

int main() {
    int *arr[3];
    int a = 12, b = 24, c = 36;
→ 변수 정의

    arr[0] = &a;
    arr[1] = &b;
    arr[2] = &c;
→ arr[0]에는 a의 주소를 넣는다. (값이 직접 들어가는 게 아님)


    printf("%d\n", *arr[1] + **arr + 1);
arr[1] : arr[1]은 b의 주소를 가리키고 있음.
*arr[1] : arr[1]은 b의 주소를 찾아가서 값(알맹이)를 꺼내라. = 24

arr : arr 은 배열의 시작점인 arr[0]의 주소 arr의 전체가 지정된다.
*arr : arr[0]에 담긴 a의 주소를 찾아가라는 뜻. 이때 arr[0] 한 칸이 지정된다.

**arr : arr[0]에 담긴 a의 주소를 찾아가서 값(알맹이)를 꺼내라.
**arr + 1 : 꺼낸 값(12)에 +1 을 해라 = 13

*arr[1] + **arr + 1 : 꺼낸 두개의 값 24 + 13 을 해서 37이 된다.
                               

**(arr+1) 이라면
(arr+1) : arr의 시작점 a[0] 에서 +1을 한 a[1]이 된다.
*(arr+1) : a[1]의 주소 한 칸을 지정하고
* *(arr+1) : a[1]의 주소에 있는 값을 꺼낸다.

 

 

13. 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오. 

답: 4
                               

SELECT COUNT(*) CNT FROM T1 A CROSS JOIN T2 B WHERE A.NAME LIKE B.RULE
SELECT COUNT(*) CNT : 개수를 세려라.
 → CNT는 별칭으로 출력하면 CNT가 이름이 된다. (AS가 없어도 별칭을 쓸 수 있다.)
FROM T1 A CROSS JOIN T2 B : T1 과 T2의 테이블을 크로스 조인해라.
 → 크로스 조인(곱셈)은 모든 조합의 경우의 수를 말한다.
 → T1 A, T2 B 에서 A와 B는 별칭이다.


= 4개

 

 

14. 다음 파이썬 코드이다. 알맞는 출력값을 쓰시오.

a,b = 100, 200 
print(a==b)
답: False
※파이썬의 실행결과 : 앞글자가 대문자로 나온다.

 

 

15. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

(     ) 다이어그램은 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다. 또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다.
(     ) 다이어그램의 형식은 (     )를 포함하여 속성(attribute)과 메서드(method)가 있다.
답: 클래스

 

 

16. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

(     ) 패턴은 객체지향 디자인 패턴이다. 
(     )는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 
부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.
답: Factory method (팩토리 매서드)

 

 

17. 다음 C언어에 대한 알맞는 출력값을 쓰시오.

#include <stdio.h>
struct jsu {
    char name[12];
    int os, db, hab, hhab;
};
int main() {
    struct jsu st[3] = {
        {"데이터1", 95, 88},
        {"데이터2", 84, 91},
        {"데이터3", 86, 75}
    };
    struct jsu* p;
    p = &st[0];
    (p + 1)->hab  = (p + 1)->os + (p + 2)->db;
    (p + 1)->hhab = (p + 1)->hab + p->os + p->db;
    printf("%d\n", (p + 1)->hab + (p + 1)->hhab);
    return 0;
}
답: 501
                               

struct jsu {
    char name[12];
    int os, db, hab, hhab;
→ 변수(구조) 정의


int main() {

    struct jsu st[3] = {
        {"데이터1", 95, 88},
        {"데이터2", 84, 91},
        {"데이터3", 86, 75}
→ 정의한 변수(구조)에 값 넣기


    struct jsu* p;
→ (리코컨) 주소를 가리킬 p 를 정의한다.

    p = &st[0];
→ p 의 주소는 st[0] 을 가리킨다.
st[0] : 표에서 데이터1 이 존재하는 첫번째 줄 전체를 가리킨다.
&st[0] : 첫번째 줄의 시작 주소를 나타낸다.
p = &st[0] : p는 이제부터 이 표의 첫번째 줄(st[0])을 가리킨다.

    (p + 1)->hab  = (p + 1)->os + (p + 2)->db;
(p + 1)->os : p의 주소(st[0]) 에 +1을 한 값(st[1])의 os에 들어있는 값을 가져와라.
(p + 2)->db : p의 주소(st[0]) 에 +2을 한 값(st[2])의 db에 들어있는 값을 가져와라.
(p + 1)->hab  =p의 주소(st[0]) 에 +1을 한 값(st[1])의 hab에 값을 넣어라.


    (p + 1)->hhab = (p + 1)->hab + p->os + p->db;


    printf("%d\n", (p + 1)->hab + (p + 1)->hhab);


답 : 501

 

 

18. 다음은, 파일 구조(File Structures)에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

- 파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식으로 접근 방식에 따라 방식이 달라진다.
- 접근 방법중, 레코드들을 키-값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 (     )을 구성하여 편성하는 방식이 있으며, 레코드를 참조할 때는 (     ) 이 가르키는 주소를 사용하여 직접 참조할 수 있다. 파일 구조에는 순차 접근, (     ) 접근, 해싱 접근이 있다.
답: 인덱스 or 색인

 

 

19. 다음 설명에 대한 알맞는 답을 영문약어로 작성하시오.

- (     )는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말한다.
- 이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만 (     )에서는 키보드 뿐만 아니라 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행한다.
- 화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식이다.
- 대표적으로는 마이크로소프트의 Windows, 애플의 Mac 운영체제 등이 있다.
답: GUI

 

 

20. 다음은 소프트웨어 통합 테스트에 대한 설명이다.  괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

( 1 ) 방식은 이름에서도 알 수 있듯이, 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 ( 2 )가 필요하다.
( 2 )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.
답: (1) 상향식  (2) 테스트 드라이버