정보처리기사 · 실기

2023년 2회 정보처리기사 실기 기출 유형

답안을 직접 작성하고 정답과 비교해 보세요. 서술형 답안은 표현이 다를 수 있어 직접 확인합니다.

← 회차 목록

주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

20문항미확인 20문항

2023년 2회 주제 · 연습 1

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[]={3,4,5,6};
    for (int k=0; k<2; k++) {
        int first=a[0];
        for (int i=0; i<3; i++) a[i]=a[i+1];
        a[3]=first;
    }
    printf("%d %d %d %d",a[0],a[1],a[2],a[3]);
    return 0;
}
정답·해설 보기

정답

5 6 3 4

해설

한 반복마다 첫 값을 끝으로 보내 왼쪽으로 한 칸 순환 이동한다. 두 번 실행하므로 원래 인덱스 2의 값이 맨 앞에 온다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 2

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int money=420, count=0;
        int[] coins={100,50,10};
        for(int coin:coins){count+=money/coin;money%=coin;}
        System.out.print(count+" "+money);
    }
}
정답·해설 보기

정답

6 0

해설

각 단위로 사용할 동전 수를 정수 나눗셈으로 구하고 나머지만 다음 단위로 넘긴다. 이 문제에 제시된 단위와 금액에 대해 계산한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 3

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={7, 5.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

9 49.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 4

SQL·데이터베이스

아래 테이블에 다음 SQL을 실행했을 때 마지막 SELECT의 결과를 쓰시오. NULL은 결측값이며, 결과는 열을 공백으로 구분하고 행마다 줄을 바꾸어 적으시오.

Scores
idnameteamscorementor
1AriA67NULL
2BoraB621
3CianA671
4DaniBNULL2
5EvanA522
INSERT INTO Scores(id,name,team,score,mentor) VALUES (6,'Fina','B',69,1);
SELECT team, COUNT(*) FROM Scores GROUP BY team ORDER BY team;
정답·해설 보기

정답

A 3 B 3

해설

B팀 행이 하나 추가된다. 그 뒤 팀별 전체 행 수를 집계한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 5

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="PROGRAM";
    const char *p=s+1;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

ROGRAM O 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 6

테스트·품질관리

① 실행문을 적어도 한 번 실행 ② 각 결정의 참·거짓 결과를 실행 ③ 결정 안의 개별 조건이 참·거짓을 갖도록 실행하는 커버리지를 차례로 쓰시오.

정답·해설 보기

정답

① 문장 커버리지 ② 분기(결정) 커버리지 ③ 조건 커버리지

해설

조건 커버리지와 분기 커버리지는 서로 동일하지 않다. 복합 조건에서는 개별 조건 결과와 전체 결정 결과를 구별해야 한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 7

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+5);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(5);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

20

해설

Child 생성자가 super에 5+5을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 8

정보보안

프로그램을 분석·변조한 흔적을 검사하고 변조 시 실행을 중단하도록 보호 장치를 넣었다. 이런 변조 방지 기술의 이름을 쓰시오.

정답·해설 보기

정답

탬퍼 프루핑(Tamper Proofing)

해설

무결성 검사, 자체 점검 등의 기법을 쓸 수 있다. 소스 표현을 복잡하게 만드는 난독화와 목적이 겹치지만 같은 개념은 아니다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 9

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={6,NULL}, b={5,&c}, a={4,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

564

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 10

SQL·데이터베이스

데이터베이스 설계의 세 단계를 순서대로 쓰시오. 보기: 논리적 설계, 물리적 설계, 개념적 설계.

정답·해설 보기

정답

개념적 설계 → 논리적 설계 → 물리적 설계

해설

요구를 개체·관계로 표현한 뒤 데이터 모델의 스키마로 변환하고, 저장 구조와 인덱스 등 구현 세부를 결정한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 11

소프트웨어 설계·구축

① 클래스의 인스턴스를 하나로 제한하고 공통 접근점을 제공 ② 자료 구조를 순회하며 구조 클래스 수정 없이 새 연산을 추가하는 패턴을 쓰시오.

정답·해설 보기

정답

① Singleton ② Visitor

해설

Singleton은 생성 패턴, Visitor는 행위 패턴이다. 병행 환경에서는 Singleton의 초기화 안전성도 고려한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 12

네트워크·운영체제

오류 제어 용어를 쓰시오. ① 대표적으로 단일 비트 오류를 정정하는 코드 ② 수신 측이 중복 정보를 이용해 직접 정정 ③ 재전송을 요청하여 복구 ④ 비트 수의 홀짝 검사 ⑤ 생성 다항식 나머지를 이용한 검사.

정답·해설 보기

정답

① 해밍 코드 ② FEC ③ BEC(후방 오류 제어, ARQ 계열) ④ 패리티 검사 ⑤ CRC

해설

기본 해밍 코드는 단일 오류 정정에 쓰인다. 추가 패리티를 둔 확장 해밍 코드는 SECDED를 구성할 수 있다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 13

네트워크·운영체제

비트 지향 데이터 링크 제어 프로토콜로 플래그 01111110과 비트 스터핑을 사용하는 프로토콜을 쓰시오.

정답·해설 보기

정답

HDLC

해설

데이터에 연속된 1이 다섯 개 나오면 0을 삽입해 플래그와 구별한다. 수신 측은 삽입된 0을 제거한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 14

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        String a="unit4";
        String b=new String("unit4");
        String c="unit"+4;
        System.out.print((a==b)+" "+a.equals(b)+" "+(a==c));
    }
}
정답·해설 보기

정답

false true true

해설

new String은 별도 객체이므로 a==b는 거짓이다. equals는 내용을 비교한다. 상수식으로 결합한 c는 같은 문자열 풀의 리터럴을 참조한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 15

정보보안

AES, ARIA, SEED, RSA, ECC를 대칭키와 비대칭키 계열로 분류하시오.

정답·해설 보기

정답

대칭키: AES·ARIA·SEED / 비대칭키: RSA·ECC

해설

ECC는 타원곡선 기반 공개키 암호 기법의 계열이다. 해시 함수와 암호 알고리즘을 구별한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 16

정보보안

임의 길이의 입력으로부터 정해진 길이의 다이제스트를 만들며, 원래 입력으로 복호화하는 기능이 없는 함수의 종류를 쓰시오.

정답·해설 보기

정답

해시 함수

해설

암호학적 해시에는 역상·제2역상·충돌에 대한 저항성이 요구된다. 일반적인 해시 테이블 함수가 모두 암호학적으로 안전한 것은 아니다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 17

SQL·데이터베이스

외래키 검사가 켜진 DB이다. Parent의 id는 1, 2이며 Child(id, parent_id)는 (11,1), (12,1), (13,2)이다. Child.parent_id는 Parent.id를 ON DELETE CASCADE로 참조한다. 다음 실행 후 SELECT 결과를 쓰시오.

DELETE FROM Parent WHERE id=1;
SELECT id, parent_id FROM Child ORDER BY id;
정답·해설 보기

정답

13 2

해설

부모 1번을 삭제하면 이를 참조하는 Child 11번과 12번도 연쇄 삭제된다. 부모 2번을 참조하는 행은 남는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {12, 7, 10, 8};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

7 8 10 12

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 19

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "STRUCTURE"
print(s[1:7:2], s[-4:][::-1])
정답·해설 보기

정답

TUT ERUT

해설

첫 슬라이스는 인덱스 1·3·5의 문자를 고른다. 둘째는 마지막 네 문자를 먼저 얻은 뒤 역순으로 바꾼다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 20

테스트·품질관리

통합 테스트에서 ① 아직 없는 하위 모듈의 응답을 대신함 ② 상위 호출 모듈을 대신해 테스트 대상을 호출함에 해당하는 도구를 쓰시오.

정답·해설 보기

정답

① 스텁(Stub) ② 드라이버(Driver)

해설

하향식 통합에서 스텁, 상향식 통합에서 드라이버를 주로 사용한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

답안과 확인 상태는 현재 브라우저에만 저장됩니다. ‘맞았어요’ 표시는 본인이 확인한 학습 기록이며 실제 시험 점수가 아닙니다.

카톡에서 정보 얻기