Notice
Recent Posts
Recent Comments
Link
관리 메뉴

코딩두의 포트폴리오

[2023실기] 2회 본문

정보처리기사/2023 실기

[2023실기] 2회

코딩두 2025. 12. 15. 13:13

1. 다음 C언어로 구현된 프로그램을 실행시킨 결과과 "43215"일 때, <처리 조건>을 참고하여 괄호에 들어갈 알맞은 식을 쓰시오.

#include <stdio.h>
main() {
    int n[] = { 5, 4, 3, 2, 1 };
    for (int i = 0; i < 5; i++)
        printf("%d", (              ));
}

 

<처리 조건>

괄호의 식에 사용할 문자는 다음으로 제한한다.
- n, i
- +, -, /, *, %
- 0~9, (, ), [, ]

 

 

 

 

2. 다음 C언어로 구현된 프로그램과 <처리 조건>을 참고하여 괄호(1~4)에 들어갈 알맞은 식을 스시오.

#include <stdio.h>
main() {
    int m = 4620;
    int a = ( ① );
    int b = ( ② );
    int c = ( ③ );
    int d = ( ④ );
    printf("1000원의 개수 : %d\n", a);
    printf("500원의 개수 : %d\n", b);
    printf("100원의 개수 : %d\n", c);
    printf("10원의 개수 : %d\n", d);
}

 

<처리 조건>

괄호의 (1~4)의 식에 사용할 문자는 다음으로 제한한다.
- a, b, c, d, m, i, d
- +, -, /, *, %
- 0~9, (, )

 

 

 

 

3. 다음 C언어로 구현된 프로그램을 분석하여 "홍길동", "김철수", "박영희"를 차례로 입력했을 때 그 실행 결과를 쓰시오.

#include <stdio.h>

char n[30];

char* getname() {
    printf("이름 입력 : ");
    gets(n);
    return n;
}

main() {
    char* n1 = getname();
    char* n2 = getname();
    char* n3 = getname();

    printf("%s\n", n1);
    printf("%s\n", n2);
    printf("%s\n", n3);
}

 

 

 

 

4. 다음 <학생> 테이블에 (9816021. '한국산', 3, '경영학개론', '050-1234-1234')인 데이터를 삽입하고자 한다. <처리조건>을 참고하여 적합한 SQL문을 작성하시오.

<학생>

학번 이름 학년 신청과목 연락처
9815932 김태산 3 경영정보시스템 050-5234
9914511 박영록  2 경제학개론 050-1415-4986
0014652 이익명 1 국제경영 050-6841-6781
9916425 김혜리 2 재무관리 050-4811-1187
9815945 이지영 3 인적자원관리 050-9785-8845

 

<처리 조건>

- 최소한의 코드로 작성될 수 있도록 SQL문을 구성한다.
- 명령문 마지막의 세미콜론(;)은 생략이 가능하다.
- 인용 부호가 필요한 경우 작은따옴표(' ')를 사용한다.

INSERT INTO 학생 VALUES(9816021, '한국산', 3, '경영학개론', '050-1234-1234');

 

 

 

5. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

#include <stdio.h>
main() {
    int n[] = { 73, 95, 82 };
    int sum = 0;
    for (int i = 0; i < 3; i++)
        sum += n[i];
    switch (sum / 30) {
        case 10:
        case 9: printf("A");
        case 8: printf("B");
        case 7:
        case 6: printf("C");
        default: printf("D");
    }
}

 

 

 

 

6. 화이트박스 테스트의 검증 기준에 대한 다음 설명에 해당하는 용어를 [보기]에서 찾아 쓰시오.

테스트 케이스를 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 설계한다.

 

[보기]

문장 커버리지 분기 커버리지 조건 커버리지 분기/조건 커버리지

조건 커버리지

 

 

 

7. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

#include <stdio.h>
main() {
    int c = 0;
    for (int i = 1; i <= 2023; i++)
        if (i % 4 == 0)
            c++;
    printf("%d", c);
}

 

 

 

 

8. 소프트웨어 데이터의 비정상적인 수정이 감지되면 소프트웨어를 오작동하게 만들어 악용을 방지하는 기술이다. 해시 함수, 핑거 프린트, 워터마킹 등의 보안 요소를 생성하여 소프트웨어에 삽입하고, 실행코드를 난독화하며, 실행 시 원본 비교 및 데이터 확인을 수행함으로써 소프트웨어를 보호하는 이 기술을 가리키는 용어를 쓰시오.

템퍼 프루핑 (Tamper Proofing)

 

 

 

9. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

#include <stdio.h>
#define MAX_SIZE 10

int isWhat[MAX_SIZE];
int point = -1;

int isEmpty() {
    if (point == -1) return 1;
    return 0;
}

int isFull() {
    if (point == 10) return 1;
    return 0;
}

void into(int num) {
    if (isFull() == 1) printf("Full");
    else isWhat[++point] = num;
}

int take() {
    if (isEmpty() == 1) printf("Empty");
    else return isWhat[point--];
    return 0;
}

main() {
    into(5); into(2);
    while (!isEmpty()) {
        printf("%d", take());
    }

    into(4); into(1); printf("%d", take());
    into(3); printf("%d", take()); printf("%d", take());
    into(6); printf("%d", take()); printf("%d", take());
}

 

 

 

 

10. 다음은 데이터베이스 구축까지의 과정을 나열한 것이다. 괄호(1~5)에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.

( 1 ) --> ( 2 ) --> ( 3 ) --> ( 4 ) --> ( 5 )

 

[보기]

개념적 설계 데이터베이스 구현 물리적 설계 요구 조건 분석
인터페이스 설계 논리 스키마 설계 논리적 설계 트랜잭션 완성

1. 요구 조건 분석

2. 개념적 설계

3. 논리적 설계

4. 물리적 설계

5. 데이터베이스 구현

 

 

 

11. 디자인 패턴에 대한 다음 설명에서 괄호(1, 2)에 들어갈 알맞은 패턴을 [보기]에서 찾아 쓰시오.

- ( 1 ) : 하나의 객체를 생성하면 생성된 객체는 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수 없는 패턴으로, 불필요한 메모리 낭비를 최소화할 수 있음
- ( 2 ) : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도로 구성함으로써, 클래스를 수정하지 않고도 새로운 연산의 추가가 가능함

 

[보기]

생성 패턴 구조 패턴 행위 패턴
추상 팩토리(Abstract Factory)
프로토타입(Prototype)
싱글톤(Singleton)
어댑터(Adapter)
브리지(Bridge)
프록시(Proxy)
인터프리터(Interpreter)
중재자(Mediator)
옵서버(Observer)
방문자(Visitor)

1. 싱글톤 (Singleton)

2. 방문자 (Visitor)

 

 

 

12. 다음 설명에서 괄호(1~3)에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.

전송 오류의 발생에는 감쇠, 자연 왜곡, 잡음 등 다양한 원인이 있으며, 이러한 오류를 검출하고 수정하는 것으로 알려진 대표적인 방식이 (  1  ) 코드 방식이다.

(  1  ) 코드 방식은 하나의 데이터 단위에 (  4  ) 비트를 추가하여 오류를 검출하여 교정이 가능한 코드로, 2bit의 오류를 검출할 수 있으며 1bit의 오류를 교정한다. 데이터 비트 외에 잉여 비트가 많이 필요하다는 단점이 있다.

(  1  ) 코드는 수신시에서 오류를 검정하는 (  2  )에 해당한다. (  2  )는 데이터 전송 과정에서 오류가 발생하면 송신측에 재전송을 요구하는 (  3  )와는 달리 재전송 요구 없이 스스로 수정하기 때문에 연속적인 데이터 전송이 가능하다.

(  3  )는 (  4  )검사, (  5  ) 등을 통해 오류를 검출하고 ARQ(Automatic Repeat reQuest)로 오류를 제어한다.

(  4  ) 검사는 오류 검사를 위해 데이터 비트 외에 1비트의 검사 비트를 추가하는 것으로 1bit의 오류만 검출할 수 있다. 1의 개수에 따라 짝수 (  4  )와 홀수 (  4  )로 나뉜다.

(  5  )는 다항식 코드를 사용하여 오류를 검출하는 방식이다. 동기식 전송에서 주로 사용되며, HDLC 프레임의 FCS 필드의 삽입 순서 필드에 사용되는 방식이다. 잡단 오류를 검출할 수 있고, 검출률이 높으므로 가장 많이 사용한다.

 

[보기]

NAK CRC FEC BCD
Parity Hamming MD5 BEC

1. Hamming

2. FEC (Forward Error Correction)

3. BEC (Backward Error Correction)

4. Parity

5. CRC (Cyclic Redundancy Check)

 

 

 

13. HDLC(High-Level Data Link Control)에 대한 다음 설명에서 괄호 ( )에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.

HDLC는 비트(Bit) 위주의 프로토콜로, 각 프레임이 데이터 흐름을 제어하고 오류를 검출할 수 있는 비트 열을 삽입하여 전송한다.
포인트 투 포인트(Point-to-Point) 및 멀티 포인트(Multi-Point), 루프(Loop) 등 다양한 데이터 링크 형태에 동일하게 적용이 가능하다는 특징이 있다.

HDLC의 프레임의 구조는 헤더, 텍스트, 트레일러로 구분되며, 데이터 플래그, 주소부, 제어부로 구분할 수 있는데, 제어부에는 프레임의 종류를 식별하기 위해 사용된다. 제어부의 첫 번째, 두 번째 비트를 사용하여 ( 1 ) 프레임, ( 2 ) 프레임, ( 3 ) 프레임으로 구분한다.

( 1 ) 프레임은 I 프레임으로 불리며, 제어부가 ‘0’로 시작하는 프레임으로, 사용자 데이터를 전달하거나 피기백킹(Piggybacking) 기법을 통해 데이터에 대한 확인 응답을 보낼 때 사용된다.

( 2 ) 프레임은 S 프레임으로 불리며, 제어부가 ‘10’로 시작하는 프레임으로, 오류 제어와 흐름 제어를 위해 사용된다.

( 3 ) 프레임은 U 프레임으로 불리며, 제어부가 ‘11’로 시작하는 프레임으로, 링크의 동작 모드 설정과 관리를 한다.

프레임에서 설정할 수 있는 동작 모드는 명령 모드, 응답 모드, ( 4 ), ( 5 )의 네 가지로 구분된다.

표준 응답 모드는 반이중 통신을 하는 포인트 투 포인트(Point-to-Point) 또는 멀티 포인트(Multi-Point) 불균형 링크 구성에 사용되며, 종국은 주국의 조회(Poll)가 있을 때만 응답하는 특징이 있다.

( 4 )는 포인트 투 포인트(Point-to-Point) 균형 링크에서 사용되며, 흐름제어가 없어 언제나 전송할 수 있다.

( 5 )는 균형 통신을 하는 포인트 투 포인트(Point-to-Point) 불균형 링크 구성에서 사용되며, 종국은 주국의 조회가(Poll) 없어도 송신이 가능하지만 링크 설정이나 오류 복구 등의 제어 기능은 주국만 가능하다.

 

[보기]

비동기 응답 모드 주소부 제어부 ARQ 정보
비번호 감독 플래그 비동기 균형 모드  

1. 정보

2. 감독

3. 비번호

4. 비동기 균형 모드

5. 비동기 응답 모드

 

 

 

14. 다음 JAVA로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

public class Test {
    public static void main(String[] args) {
        String str1 = "Programming";
        String str2 = "Programming";
        String str3 = new String("Programming");

        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
        System.out.println(str1.equals(str3));
        System.out.println(str2.equals(str3));
    }
}

 

 

 

 

15. 다음 [보기]에 나열된 암호화 알고리즘을 대칭키 암호화 알고리즘과 비대칭키 암호화 알고리즘으로 구분하시오.

RSA DES ARIA ECC SEED AES

대칭키 암호화 알고리즘 - DES, ARIA, SEED, AES

비대칭키 암호화 알고리즘 - RSA, ECC

 

 

 

16. 암호화 알고리즘에 대한 다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오.

(   )는 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 알고리즘으로, 복호화가 거의 불가능한 일방향 함수이다. 무결성 검증을 위해 사용될 뿐만 아니라 정보보호의 다양한 분야에서 활용되며, 종류에는 SHA 시리즈, MD5, N-NASH, SNEFRU 등이 있다.

해시(Hash)

 

 

 

17. 다음 <처리 조건>에 부합하는 <SQL문>이 완성되도록 괄호에 적합한 옵션을 쓰시오.

<처리 조건>

- <학생> 뷰를 제거한다.
- <학생> 뷰를 참조하는 모든 데이터도 연쇄적으로 제거한다.

 

<SQL문>

DROP VIEW 학생 (     );

CASCADE

 

 

 

18. 다음은 데이터를 오름차순으로 정렬하는 선택 정렬 알고리즘을 C 언어 프로그램으로 구현한 것이다. 프로그램을 분석하여 괄호에 들어갈 알맞은 연산자를 쓰시오.

#include <stdio.h>

main() {
    int E[] = { 64, 25, 12, 22, 11 };
    int n = sizeof(E) / sizeof(E[0]);
    int i = 0;

    do {
        int j = i + 1;
        do {
            if (E[i] > E[j]) {
                int tmp = E[i];
                E[i] = E[j];
                E[j] = tmp;
            }
            j++;
        } while (j < n);
        i++;
    } while (i < n - 1);

    for (int i = 0; i <= 4; i++)
        printf("%d ", E[i]);
}

 

<처리 조건>

괄호의 연산자는 다음으로 제한한다.
- +=, -=, *=, /=
- ==, !=, >, >=, <, <=
- &&, ||

 

 

 

 

19. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

a = "engineer information programming"
b = a[:3]
c = a[4:6]
d = a[29:]

e = b + c + d

print(e)

 

 

 

 

20. 애플리케이션 테스트에 관한 다음 설명에서 괄호(1, 2)에 들어갈 알맞은 용어를 쓰시오.

하향식 통합 테스트는 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법이다. 깊이 우선 통합법이나 넓이 우선 통합법을 사용하며, 주어 제어 모듈의 종속 모듈들을 ( 1 )으로 대체한다는 특징이 있다.

상향식 통합 테스트는 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법이다. 하위 모듈들을 클러스터(Cluster)로 결합하며, 상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈은 ( 2 )를 작성한다는 특징이 있다.

1. 스텁 (Stub)

2. 드라이버 (Driver)

'정보처리기사 > 2023 실기' 카테고리의 다른 글

[2023실기] 3회  (1) 2025.12.15
[2023실기] 1회  (0) 2025.12.14