[국회직 9급 컴퓨터일반] 18년 1회차
국회직 9급 컴퓨터일반 기출문제

18년 1회차

총 20문항 · 객관식 · A4 약 1장

1 / 1
A4정답 포함
국회직 9급 컴퓨터일반 기출문제모두CBT · moducbt.com

18년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
데이터베이스에서 트랜잭션에 대한 설명 중 다음의 특성이 의미하는 것으로 옳은 것은?
각 트랜잭션은 다른 트랜잭션과 독립적으로 수행되는 것처럼 보여야 하며, 다른 트랜잭션에 영향을 미치지 않는다.
1고립성(Isolation)
2일관성(Consistency)
3원자성(Atomicity)
4지속성(Durability)
5투명성(Transparency)
정답 및 해설

제시된 특성은 트랜잭션의 고립성(Isolation)이다.

동시에 실행되는 트랜잭션이 서로의 중간 결과에 간섭하지 않고, 혼자 실행되는 것처럼 보이게 하는 성질이다.

  • 일관성: 트랜잭션 전후로 데이터베이스가 무결성 제약을 만족하는 상태를 유지하는 성질이다.
  • 원자성: 트랜잭션의 연산이 전부 반영되거나 전혀 반영되지 않아야 하는 성질이다.
  • 지속성: 완료된 트랜잭션의 결과가 장애 후에도 보존되는 성질이다.
  • 투명성: 트랜잭션의 ACID 특성에 속하지 않으며, 분산 시스템 등에서 내부 구조를 사용자에게 감추는 개념이다.
문제 2
프로세스의 상태 변이에 대한 설명으로 옳지 않은 것은?
1시간 할당량(time slice)을 사용하는 일반적 우선순위 기반 스케줄링에서 실행(running) 상태 프로세스의 시간 할당량이 모두 소진되었을 때, 우선순위가 높은 다른 준비 상태의 프로세스가 있다면 실행 중이던 프로세스는 커널(kernel)에 의해 스케줄링되기를 기다리는 준비(ready) 상태로 전이된다.
2실행 상태의 프로세스가 동기식 입출력 요청을 하면, 일반적으로 해당 프로세스는 입출력이 완료될 때까지 CPU를 반납하고 대기(blocked 또는 waiting) 상태로 전이된다.
3대기 상태의 프로세스가 요청하였던 입출력이 완료되면, 해당 프로세스는 CPU 연산이 가능해지므로 바로 실행 상태로 전이된다.
4다중 처리기 시스템(multi-processor system)에서는 실행 상태의 프로세스가 여러 개 있을 수 있다.
5대기 상태의 프로세스들은 CPU 할당을 위한 스케줄링에서 제외된다.
정답 및 해설

옳지 않은 것은 입출력 완료 후 바로 실행 상태로 전이된다는 설명이다.

입출력이 끝난 프로세스는 CPU를 곧바로 받는 것이 아니라 준비(ready) 상태로 옮겨 가 스케줄러의 선택을 기다린다.

  • 시간 할당량 소진: 실행 중이던 프로세스는 CPU를 내놓고 준비 상태로 전이되므로 옳다.
  • 동기식 입출력 요청: 완료될 때까지 CPU를 반납하고 대기 상태가 되므로 옳다.
  • 다중 처리기 시스템: 처리기마다 프로세스를 실행할 수 있어 실행 상태가 여러 개일 수 있으므로 옳다.
  • 대기 상태 프로세스: 사건 완료를 기다리는 중이라 CPU 할당 대상에서 제외되므로 옳다.
문제 3
OSI(Open System Interconnection) 7계층에 대한 설명으로 옳지 않은 것은?
17계층에서 물리적 전송 매체와 직접적으로 연관이 있는 계층은 물리 계층이다.
2수신 측에서 패킷을 수신하게 되면, 상위 계층에서 하위 계층 순으로 처리된다.
3전송 계층(transport layer)의 대표적인 프로토콜로는 TCP, UDP 등이 있다.
4네트워크 계층에서는 라우팅 및 패킷 전송의 기능을 수행한다.
5응용 계층에서는 전자 사서함, 파일 전송 등의 서비스를 제공한다.
정답 및 해설

옳지 않은 것은 수신 측이 상위 계층에서 하위 계층 순으로 처리한다는 설명이다.

수신 측은 물리 계층에서 응용 계층 방향, 즉 하위에서 상위 순으로 헤더를 벗겨 가며 처리한다. 상위에서 하위로 내려가는 것은 송신 측의 동작이다.

  • 물리 계층: 전송 매체와 직접 연관되어 비트를 신호로 전달하므로 옳다.
  • 전송 계층: TCP, UDP가 대표 프로토콜이므로 옳다.
  • 네트워크 계층: 경로 선택(라우팅)과 패킷 전달을 맡으므로 옳다.
  • 응용 계층: 전자우편, 파일 전송 등 사용자 서비스를 제공하므로 옳다.
문제 4
다음 정렬 알고리즘의 수행시간을 Big-O 표기법으로 나타냈을 때 최악의 경우의 수행시간이 같은 것들로만 나열된 것은?
선택 정렬(selection sort), 합병 정렬(merge sort),
삽입 정렬(insertion sort), 퀵 정렬(quick sort), 힙 정렬(heap sort)
1합병 정렬, 퀵 정렬, 힙 정렬
2힙 정렬, 선택 정렬, 퀵 정렬
3합병 정렬, 선택 정렬, 삽입 정렬
4합병 정렬, 힙 정렬, 삽입 정렬
5선택 정렬, 삽입 정렬, 퀵 정렬
정답 및 해설

최악 수행시간이 같은 조합은 선택 정렬, 삽입 정렬, 퀵 정렬이다.

이 세 정렬의 최악은 모두 O(n2)O(n^2)이다. 반면 합병 정렬과 힙 정렬은 최악에도 O(nlog⁡n)O(n \log n)이다.

  • 합병 정렬, 퀵 정렬, 힙 정렬: 퀵 정렬만 최악이 O(n2)O(n^2)이다.
  • 힙 정렬, 선택 정렬, 퀵 정렬: 힙 정렬만 최악이 O(nlog⁡n)O(n \log n)이다.
  • 합병 정렬, 선택 정렬, 삽입 정렬: 합병 정렬만 최악이 O(nlog⁡n)O(n \log n)이다.
  • 합병 정렬, 힙 정렬, 삽입 정렬: 삽입 정렬만 최악이 O(n2)O(n^2)이다.
문제 5
관계형 데이터베이스(relational database)에 대한 설명으로 옳은 것을 <보기>에서 모두 고르면?
<보기>
ㄱ. 스키마 변환 시 정보의 무손실, 자료 중복의 감소, 관련된 구조 간의 통합의 원칙을 준수하여야 한다.
ㄴ. 관계대수(relational algebra)의 연산에서 피연산자는 모두 릴레이션이지만 연산결과는 릴레이션이 아니다.
ㄷ. 릴레이션에 연산을 수행 시 삽입이상(insertion anomaly), 삭제이상(deletion anomaly), 갱신이상(update anomaly)이 발생할 수 있다.
ㄹ. 튜플을 구성하는 속성 사이에 존재하는 종속관계를 고려하지 않고 하나의 릴레이션으로 표현하여 이상(anomaly)을 해결할 수 있다.
ㅁ. 릴레이션이 여러 속성을 표현할 때 이를 작게 분해(decomposition)하는 과정을 정규화(normalization)라고 한다.
ㅂ. 릴레이션들은 관계대수(relational algebra)로 조작이 가능하다.
1ㄱ, ㄴ, ㄷ
2ㄴ, ㄷ, ㄹ
3ㄴ, ㄹ, ㅁ
4ㄷ, ㄹ, ㅂ
5ㄷ, ㅁ, ㅂ
정답 및 해설

옳은 것은 ㄷ, ㅁ, ㅂ이다.

각 지문을 판정하면 ㄷ, ㅁ, ㅂ만 참이고, 이 세 지문으로만 이루어진 조합은 하나뿐이다.

  • ㄱ(X): 정규화의 스키마 변환 원칙은 정보의 무손실, 중복 감소, 분리의 원칙이다. 관련 구조의 통합이 아니다.
  • ㄴ(X): 관계대수는 연산 결과도 릴레이션이다(폐쇄 성질).
  • ㄷ(O): 설계가 잘못된 릴레이션에서는 삽입·삭제·갱신 이상이 발생할 수 있다.
  • ㄹ(X): 종속관계를 무시하고 한 릴레이션에 모으면 이상이 해결되지 않고 오히려 생긴다.
  • ㅁ(O): 여러 속성을 가진 릴레이션을 작게 분해하는 과정이 정규화이다.
  • ㅂ(O): 릴레이션은 관계대수로 조작할 수 있다.
문제 6
후위표기법(postfix notation)으로 된 다음 식의 전위표기법(prefix notation)으로 옳은 것은?
ABC+D/-AE+BF*/+
1+-A/+BCD/+AE*BF
2-+A/BC+D/+AE*BF
3+-A/+BCD/+*AEBF
4+A-/+BCD/+AE*BF
5-+/A+BCD/+*AEBF
정답 및 해설

주어진 식의 전위표기는 +-A/+BCD/+AE*BF이다.

스택 방식으로 후위식을 읽어 부분식을 묶는다.
왼쪽 부분: ABC+D/- → A - ((B+C)/D)
오른쪽 부분: AE+BF*/ → (A+E)/(B*F)
마지막 +가 두 부분을 더한다.

각 부분을 전위로 바꾸면 왼쪽은 -A/+BCD, 오른쪽은 /+AE*BF이고, 맨 앞에 최상위 연산자 +를 붙인다.

  • -+A/BC+D/+AE*BF: 최상위 연산자가 -로 시작하므로 틀리다.
  • +-A/+BCD/+*AEBF: 오른쪽이 ((A*E)+B)/F가 되어 틀리다.
  • +A-/+BCD/+AE*BF: 최상위 +의 왼쪽 피연산자가 A 하나가 되어 틀리다.
  • -+/A+BCD/+*AEBF: 최상위 연산자가 -로 시작하므로 틀리다.
문제 7
다음 카르노 맵에 해당하는 논리식 F로 옳은 것은?
BC\A01
0001
0100
1110
1010
1F = AB + AB′C
2F = A′B′ + A′B′C′
3F = AB′ + A′BC
4F = A′B + AB′C′
5F = AB + BC
정답 및 해설

맵을 간소화한 논리식은 F = A′B + AB′C′이다.

A=0 열에서는 BC가 11, 10일 때 1이므로 두 칸을 묶어 A′B가 된다.

A=1 열에서는 BC가 00인 칸만 1이므로 AB′C′이고, 이 칸은 인접한 1과 묶이지 않는다.

  • AB + AB′C: A=1, BC=10에서 1이 되지만 맵의 값은 0이다.
  • A′B′ + A′B′C′: A=0, BC=00에서 1이 되지만 맵의 값은 0이다.
  • AB′ + A′BC: A=1, BC=01에서 1이 되지만 맵의 값은 0이다.
  • AB + BC: A=1, BC=11에서 1이 되지만 맵의 값은 0이다.
문제 8
가상 메모리 시스템에서 메모리 부족 시의 페이지 교체 기법(page replacement algorithm)들에 대한 설명으로 옳지 않은 것은?
1LRU(Least Recently Used) 기법은 메모리에 적재된 페이지 중 가장 오랫동안 참조되지 않았던 페이지를 교체하는 기법이다.
2LRU 기법은 실제 그 구현 오버헤드가 커서, 일반적으로 오버헤드를 줄인 여러 유형의 LRU 근사 알고리즘(LRU approximation algorithm)들이 사용되는 것이 보통이다.
3LRU 기법은 물리적 페이지의 개수를 확장했음에도 페이지 폴트가 늘어나는 경우가 발생할 수도 있는데, 이를 Belady’s anomaly라 한다.
4이론적으로는 최적의 페이지 교체 기법은 메모리에 적재된 페이지들 중에서 앞으로 가장 오랫동안 참조되지 않을 페이지를 교체하는 것이다.
5FIFO(First In First Out) 기법은 메모리에 적재된 페이지들 중 가장 먼저 메모리에 적재된 페이지를 교체하는 방법이다.
정답 및 해설

옳지 않은 것은 Belady’s anomaly를 LRU의 현상으로 설명한 것이다.

페이지 프레임을 늘렸는데 페이지 폴트가 늘어나는 현상은 FIFO에서 나타난다. LRU는 스택 알고리즘에 속해 이 이상이 발생하지 않는다.

  • LRU의 정의: 가장 오랫동안 참조되지 않은 페이지를 교체하므로 옳다.
  • LRU 근사 알고리즘: 정확한 LRU는 오버헤드가 커서 근사 기법을 쓰므로 옳다.
  • 최적 페이지 교체: 앞으로 가장 오랫동안 참조되지 않을 페이지를 교체하는 것이 이론적 최적이므로 옳다.
  • FIFO의 정의: 가장 먼저 적재된 페이지를 교체하므로 옳다.
문제 9
요즘 집안에서 스마트폰 및 컴퓨터의 인터넷 접속을 위하여 공유기의 사용이 일반화되어 있다. 공유기에 접속하는 컴퓨터 디바이스에는 사설 IP가 주로 할당되는데 이때 IP주소의 자동 할당을 위해 사용되는 프로토콜로 옳은 것은?
1ARP
2DHCP
3TCP
4UDP
5ICMP
정답 및 해설

IP 주소를 자동으로 할당하는 프로토콜은 DHCP이다.

공유기의 DHCP 서버가 접속한 기기에 사설 IP 주소, 게이트웨이, DNS 서버 정보 등을 임대해 준다.

  • ARP: IP 주소에 대응하는 MAC 주소를 찾는 프로토콜이다.
  • TCP: 연결 지향의 신뢰성 있는 전송 계층 프로토콜이다.
  • UDP: 비연결형 전송 계층 프로토콜이다.
  • ICMP: 오류 보고와 진단 메시지를 전달하는 프로토콜이다.
문제 10
다음의 C 프로그램 실행 결과로 출력되는 a, b, c 값으로 옳은 것은?
#include <stdio.h>
int foo(int a, int *b)
{
        int c;
        *b = a + 1;
        c = a - 1;
        return c;
}
void main()
{
    int a = 5;
    int b = 3;
    int c = 0;
    b = foo(a, &c);
    c = foo(b, &a);
    printf("a=%d b=%d c=%d\n", a, b, c);
}
15, 4, 3
24, 3, 2
36, 3, 4
44, 3, 5
55, 3, 0
정답 및 해설

출력되는 값은 a=5, b=4, c=3이다.

foo는 포인터가 가리키는 변수에 a+1을 넣고 a-1을 반환한다. 초기값은 a=5, b=3, c=0이다.

첫 호출 b = foo(a, &c): 인자 5이므로 c = 6, 반환값 4가 b에 대입되어 b = 4이다.
둘째 호출 c = foo(b, &a): 인자 4이므로 a = 5, 반환값 3이 c에 대입되어 c = 3이다.

  • 4, 3, 2: a는 둘째 호출에서 5가 되고 b는 첫 호출의 반환값 4이므로 틀리다.
  • 6, 3, 4: 6은 첫 호출에서 c에 들어간 값이고 둘째 호출의 반환값 3으로 덮어써지며, b도 3이 아니므로 틀리다.
  • 4, 3, 5: 둘째 호출에서 a가 5, c가 3이 되므로 틀리다.
  • 5, 3, 0: b와 c를 초기값 그대로 둔 값으로, 두 변수 모두 호출 결과로 바뀌므로 틀리다.
문제 11
데이터베이스에서 사용하는 뷰(view)에 대한 설명으로 옳은 것을 <보기>에서 모두 고르면?
<보기>
ㄱ. 뷰의 정의는 변경할 수 없다.
ㄴ. 뷰는 삽입, 갱신, 삭제 연산에 제약이 있다.
ㄷ. 뷰 위에 다른 뷰를 정의할 수 없다.
ㄹ. 뷰가 정의된 테이블이 삭제되더라도 뷰는 남는다.
ㅁ. 뷰는 물리적으로 구현되는 테이블이다.
1ㄱ, ㄴ
2ㄱ, ㅁ
3ㄴ, ㄷ
4ㄷ, ㄹ
5ㄹ, ㅁ
정답 및 해설

옳은 것은 ㄱ, ㄴ이다.

뷰는 기본 테이블에서 유도된 가상 테이블이라는 점에서 나머지 지문의 판정이 나온다.

  • ㄱ(O): 표준 SQL에는 뷰 정의를 고치는 ALTER 문이 없어, 삭제 후 다시 생성한다.
  • ㄴ(O): 뷰를 통한 삽입·갱신·삭제에는 제약이 있다.
  • ㄷ(X): 뷰 위에 다른 뷰를 정의할 수 있다.
  • ㄹ(X): 기본 테이블이 삭제되면 그에 의존하는 뷰는 함께 삭제되거나 사용할 수 없게 된다.
  • ㅁ(X): 뷰는 물리적으로 저장되지 않는 가상 테이블이다.
문제 12
프로세스(process)나 스레드(thread)들이 공유 자원에 하나 이상의 수정(write 또는 modify) 연산을 포함하는 동시 접근을 할 때 그 접근 부분들을 임계 구역(critical section)이라 한다. 이를 보호하기 위한 병행 프로세스 동기화 기법으로 옳은 것은?
1인터럽트(interrupt)
2선점 스케줄링(preemptive scheduling)
3문맥교환(context switching)
4상호배제(mutual exclusion)
5교착상태(deadlock)
정답 및 해설

임계 구역을 보호하는 기법은 상호배제(mutual exclusion)이다.

한 프로세스나 스레드가 임계 구역에 있는 동안 다른 쪽의 진입을 막아 공유 자원의 경쟁 상태를 방지한다.

  • 인터럽트: 예외나 입출력 완료 같은 사건을 CPU에 알리는 메커니즘이다.
  • 선점 스케줄링: 실행 중인 프로세스에서 CPU를 빼앗을 수 있는 스케줄링 방식이다.
  • 문맥교환: CPU를 다른 프로세스로 넘길 때 상태를 저장하고 복원하는 과정이다.
  • 교착상태: 서로 상대의 자원을 기다리며 진행하지 못하는 현상으로, 보호 기법이 아니다.
문제 13
배열 int array[10][200]를 행우선순서(row major order)로 저장하는 경우의 원소 array[7][12]의 시작주소는 몇 번지인가?
(단, 배열 array의 시작주소는 10840h로, int의 크기는 4바이트로 가정한다. 배열 첨자는 0부터 시작하며 숫자에 붙은 h는 16진수 표기를 의미한다.)
110804h
211E50h
316488h
4108BFh
510A3Ch
정답 및 해설

원소 array[7][12]의 시작주소는 11E50h이다.

행우선에서는 앞선 7개 행과 현재 행의 12개 원소를 건너뛴다.
공식: 시작주소 + (행 × 열 크기 + 열) × 원소 크기
오프셋: (7×200+12)×4=5648(7 \times 200 + 12) \times 4 = 5648
16진수 변환: 5648 = 1610h
주소: 10840h + 1610h = 11E50h

  • 16488h: 10840에 5648을 십진수로 더한 값으로, 16진수 변환을 빠뜨린 결과이다.
  • 10804h: 배열 시작주소 10840h보다 작아 배열 안의 주소가 될 수 없다.
  • 108BFh: 끝자리가 홀수로, 4바이트 원소의 시작주소 간격에 맞지 않는다.
  • 10A3Ch: 열우선으로 계산한 값 (12×10+7)×4=508(12 \times 10 + 7) \times 4 = 508을 더한 결과로, 행우선 조건에 맞지 않는다.
문제 14
다음은 마트에서 판매 기록을 저장한 트랜잭션(transaction) 데이터이다. 규칙 “기저귀” -> “맥주”의 신뢰도(confidence) 값으로 옳은 것은?
식별자품목
1맥주, 땅콩, 기저귀
2맥주, 커피, 기저귀
3맥주, 기저귀, 계란
4땅콩, 계란, 우유
5땅콩, 커피, 기저귀, 우유
10.33
20.5
30.75
40.8
51.00
정답 및 해설

규칙 기저귀 → 맥주의 신뢰도는 0.75이다.

신뢰도는 기저귀를 포함한 거래 중 맥주도 포함한 거래의 비율이다.
기저귀 포함 거래: 식별자 1, 2, 3, 5로 4건
기저귀와 맥주 동시 포함 거래: 식별자 1, 2, 3으로 3건
신뢰도: 34=0.75\dfrac{3}{4} = 0.75

  • 0.33: 분모를 3건으로 잡아야 나오는 비율이지만 기저귀 포함 거래는 4건이다.
  • 0.5: 기저귀 포함 4건 중 2건으로 센 값이지만 동시 포함 거래는 3건이다.
  • 0.8: 전체 5건 중 기저귀가 포함된 비율 45\dfrac{4}{5}로, 기저귀의 지지도이다.
  • 1.00: 맥주가 포함된 3건 모두에 기저귀가 있다는 값으로, 방향이 반대인 규칙 맥주 → 기저귀의 신뢰도이다.
문제 15
사용자가 WWW(World Wide Web)을 사용하여 임의의 사이트에 접속하는 과정의 설명으로 옳지 않은 것은?
1사용자의 웹브라우저에서 DNS 서버로 DNS 질의 메시지를 보낸다.
2DNS 간의 질의는 재귀형(recursive) 또는 반복형(iterative)으로 연계된다.
3사용자의 웹브라우저는 DNS 서버로부터 사이트의 웹 서버 MAC 주소를 획득한다.
4HTTP 요청 메시지를 보내기 전에 TCP 3-방향 핸드셰이크를 수행한다.
5웹 서버가 보낸 HTTP 응답 메시지의 바디로부터 HTML을 추출하여 웹 페이지를 보여준다.
정답 및 해설

옳지 않은 것은 DNS 서버로부터 웹 서버의 MAC 주소를 얻는다는 설명이다.

DNS가 알려 주는 것은 도메인 이름에 대응하는 IP 주소이다. MAC 주소는 같은 네트워크 안의 다음 홉을 찾을 때 ARP로 얻는다.

  • DNS 질의 메시지: 접속 시 이름 해석을 위해 DNS 서버에 질의를 보내므로 옳다.
  • DNS 간 질의: 재귀형 또는 반복형으로 연계되므로 옳다.
  • TCP 3-방향 핸드셰이크: HTTP 요청 전에 연결을 수립하므로 옳다.
  • HTTP 응답 처리: 응답 바디의 HTML을 해석해 페이지를 표시하므로 옳다.
문제 16
1과 1000 사이의 정수로 구성된 이진탐색트리(binary search tree)에서 숫자 573을 탐색하는 경우 다음 중 비교경로로 옳지 않은 것은?
12, 173, 241, 856, 301, 489, 710, 516, 573
27, 816, 68, 714, 121, 561, 278, 395, 573
3981, 825, 693, 38, 137, 608, 224, 461, 573
4926, 139, 884, 278, 734, 319, 662, 481, 573
514, 970, 831, 765, 111, 249, 318, 473, 573
정답 및 해설

비교경로로 옳지 않은 것은 7, 816, 68, 714, 121, 561, 278, 395, 573이다.

이진탐색트리에서는 573보다 작은 값을 만나면 하한이, 큰 값을 만나면 상한이 갱신되고, 이후 값은 그 범위 안에 있어야 한다.

이 경로는 561까지 범위가 561~714로 좁혀졌는데, 다음 값 278이 범위 밖이므로 불가능하다.

  • 2, 173, 241, 856, 301, 489, 710, 516, 573: 모든 값이 범위 안이며 마지막 범위 516~710에 573이 있다.
  • 981, 825, 693, 38, 137, 608, 224, 461, 573: 모든 값이 범위 안이며 마지막 범위 461~608에 573이 있다.
  • 926, 139, 884, 278, 734, 319, 662, 481, 573: 모든 값이 범위 안이며 마지막 범위 481~662에 573이 있다.
  • 14, 970, 831, 765, 111, 249, 318, 473, 573: 모든 값이 범위 안이며 마지막 범위 473~765에 573이 있다.
문제 17
유니버설 게이트 집합(universal gate set)은 그 구성 원소만으로 어떤 형태의 디지털 시스템도 구현할 수 있는 기능적으로 완전한 게이트들의 집합이다. 다음 중 유니버설 게이트 집합으로 옳지 않은 것은?
1{ NAND }
2{ OR, DECODER }
3{ MULTIPLEXER }
4{ OR, NOT }
5{ XOR }
정답 및 해설

유니버설 게이트 집합이 아닌 것은 { XOR }이다.

XOR를 아무리 조합해도 출력은 입력 일부를 XOR한 형태에 머물러 AND 기능을 만들 수 없다.

  • { NAND }: NAND만으로 NOT, AND, OR를 모두 만들 수 있다.
  • { OR, DECODER }: 디코더가 모든 최소항을 만들고 OR로 합치면 임의의 논리함수를 구현할 수 있다.
  • { MULTIPLEXER }: 선택선에 입력을 넣고 데이터 입력에 상수나 변수를 주어 임의의 논리함수를 구현할 수 있다.
  • { OR, NOT }: 드모르간 법칙으로 AND를 만들 수 있다.
문제 18
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

int recursion(int n)
{
        if (n < 5) return 1;
        else   if (n % 5 == 1) return n + recursion(n - 1);
        else    recursion(n - 1);
}

int main()
{
        int n    = recursion(16);
        printf("%d",    n);

        return    0;
}
134
233
331
429
528
정답 및 해설

프로그램의 출력값은 34이다.

n을 5로 나눈 나머지가 1일 때만 n을 더하고, 그 외에는 n-1로 내려간다. 마지막 else에 return이 없어 표준상 미정의 동작이지만, 재귀 결과가 그대로 전달된다고 보고 추적한다.

r(16) = 16 + r(15), r(15)부터 r(12)까지는 r(11)로 내려간다.
r(11) = 11 + r(10), r(10)부터 r(7)까지는 r(6)으로 내려간다.
r(6) = 6 + r(5), r(5) = r(4) = 1이다.
합계: 16 + 11 + 6 + 1 = 34

  • 33: 기저 사례의 반환값 1을 빠뜨린 값이다.
  • 31: 합계 16 + 11 + 6 + 1보다 3 작아 추적 결과와 맞지 않는다.
  • 29: 합계 16 + 11 + 6 + 1보다 5 작아 추적 결과와 맞지 않는다.
  • 28: n = 6에서의 덧셈을 빠뜨린 값이다.
문제 19
인터넷에서 주로 사용하는 TCP와 UDP에 대한 설명으로 옳지 않은 것은?
1TCP에는 네트워크 상 트래픽이 폭주하는 현상을 방지하는 혼잡 제어(congestion control) 기능이 포함되어 있다.
2UDP는 비신뢰적이고 비연결형인 서비스를 제공한다.
3TCP는 패킷 손실이 발생했을 때, 패킷 재전송 기능을 수행한다.
4UDP 패킷 헤더에는 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬 등의 정보를 담고 있다.
5TCP는 신뢰적인 데이터 전달은 보장하지만, 수신 프로세스에게 데이터가 올바른 순서로 전달되는 것은 보장하지 못한다.
정답 및 해설

옳지 않은 것은 TCP가 올바른 순서의 전달을 보장하지 못한다는 설명이다.

TCP는 순서 번호로 세그먼트를 재정렬하여 수신 프로세스에 바이트 스트림을 순서대로 전달한다.

  • 혼잡 제어: TCP는 네트워크 폭주를 막는 혼잡 제어 기능을 포함하므로 옳다.
  • UDP의 서비스: 비신뢰적이고 비연결형이므로 옳다.
  • 패킷 재전송: TCP는 손실이 감지되면 재전송하므로 옳다.
  • UDP 헤더: 출발지 포트, 목적지 포트, 길이, 체크섬으로 구성되므로 옳다.
문제 20
다음 중 회선 교환 방식(circuit switching)의 특성으로 옳지 않은 것은?
1데이터를 주고 받기 전에 종단 간 연결(end to end connnection) 과정이 필요하다.
2연결이 수립되면, 해당 회선을 독점적으로 사용한다.
3회선 교환 방식의 대표적인 예로는 전화망이 있다.
4패킷 교환 방식(packet switching)에 비해 더 많은 동시 접속자를 수용할 수 있다.
5패킷 교환 방식에 비해 안정적인 전송속도를 보장할 수 있다.
정답 및 해설

옳지 않은 것은 패킷 교환보다 더 많은 동시 접속자를 수용할 수 있다는 설명이다.

회선 교환은 연결마다 자원을 고정 점유하므로 수용 인원이 제한된다. 패킷 교환은 회선을 공유하여 더 많은 사용자를 수용한다.

  • 종단 간 연결: 데이터 전송 전에 연결 설정 과정이 필요하므로 옳다.
  • 회선 독점: 연결이 수립되면 해당 회선을 독점하므로 옳다.
  • 전화망: 회선 교환의 대표 사례이므로 옳다.
  • 안정적 전송속도: 자원이 예약되어 있어 일정한 속도를 보장하기 쉬우므로 옳다.
국회직 9급 컴퓨터일반 기출문제모두CBT · moducbt.com
18년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
데이터베이스에서 트랜잭션에 대한 설명 중 다음의 특성이 의미하는 것으로 옳은 것은?
각 트랜잭션은 다른 트랜잭션과 독립적으로 수행되는 것처럼 보여야 하며, 다른 트랜잭션에 영향을 미치지 않는다.
1고립성(Isolation)
2일관성(Consistency)
3원자성(Atomicity)
4지속성(Durability)
5투명성(Transparency)
정답 및 해설

제시된 특성은 트랜잭션의 고립성(Isolation)이다.

동시에 실행되는 트랜잭션이 서로의 중간 결과에 간섭하지 않고, 혼자 실행되는 것처럼 보이게 하는 성질이다.

  • 일관성: 트랜잭션 전후로 데이터베이스가 무결성 제약을 만족하는 상태를 유지하는 성질이다.
  • 원자성: 트랜잭션의 연산이 전부 반영되거나 전혀 반영되지 않아야 하는 성질이다.
  • 지속성: 완료된 트랜잭션의 결과가 장애 후에도 보존되는 성질이다.
  • 투명성: 트랜잭션의 ACID 특성에 속하지 않으며, 분산 시스템 등에서 내부 구조를 사용자에게 감추는 개념이다.
문제 2
프로세스의 상태 변이에 대한 설명으로 옳지 않은 것은?
1시간 할당량(time slice)을 사용하는 일반적 우선순위 기반 스케줄링에서 실행(running) 상태 프로세스의 시간 할당량이 모두 소진되었을 때, 우선순위가 높은 다른 준비 상태의 프로세스가 있다면 실행 중이던 프로세스는 커널(kernel)에 의해 스케줄링되기를 기다리는 준비(ready) 상태로 전이된다.
2실행 상태의 프로세스가 동기식 입출력 요청을 하면, 일반적으로 해당 프로세스는 입출력이 완료될 때까지 CPU를 반납하고 대기(blocked 또는 waiting) 상태로 전이된다.
3대기 상태의 프로세스가 요청하였던 입출력이 완료되면, 해당 프로세스는 CPU 연산이 가능해지므로 바로 실행 상태로 전이된다.
4다중 처리기 시스템(multi-processor system)에서는 실행 상태의 프로세스가 여러 개 있을 수 있다.
5대기 상태의 프로세스들은 CPU 할당을 위한 스케줄링에서 제외된다.
정답 및 해설

옳지 않은 것은 입출력 완료 후 바로 실행 상태로 전이된다는 설명이다.

입출력이 끝난 프로세스는 CPU를 곧바로 받는 것이 아니라 준비(ready) 상태로 옮겨 가 스케줄러의 선택을 기다린다.

  • 시간 할당량 소진: 실행 중이던 프로세스는 CPU를 내놓고 준비 상태로 전이되므로 옳다.
  • 동기식 입출력 요청: 완료될 때까지 CPU를 반납하고 대기 상태가 되므로 옳다.
  • 다중 처리기 시스템: 처리기마다 프로세스를 실행할 수 있어 실행 상태가 여러 개일 수 있으므로 옳다.
  • 대기 상태 프로세스: 사건 완료를 기다리는 중이라 CPU 할당 대상에서 제외되므로 옳다.
문제 3
OSI(Open System Interconnection) 7계층에 대한 설명으로 옳지 않은 것은?
17계층에서 물리적 전송 매체와 직접적으로 연관이 있는 계층은 물리 계층이다.
2수신 측에서 패킷을 수신하게 되면, 상위 계층에서 하위 계층 순으로 처리된다.
3전송 계층(transport layer)의 대표적인 프로토콜로는 TCP, UDP 등이 있다.
4네트워크 계층에서는 라우팅 및 패킷 전송의 기능을 수행한다.
5응용 계층에서는 전자 사서함, 파일 전송 등의 서비스를 제공한다.
정답 및 해설

옳지 않은 것은 수신 측이 상위 계층에서 하위 계층 순으로 처리한다는 설명이다.

수신 측은 물리 계층에서 응용 계층 방향, 즉 하위에서 상위 순으로 헤더를 벗겨 가며 처리한다. 상위에서 하위로 내려가는 것은 송신 측의 동작이다.

  • 물리 계층: 전송 매체와 직접 연관되어 비트를 신호로 전달하므로 옳다.
  • 전송 계층: TCP, UDP가 대표 프로토콜이므로 옳다.
  • 네트워크 계층: 경로 선택(라우팅)과 패킷 전달을 맡으므로 옳다.
  • 응용 계층: 전자우편, 파일 전송 등 사용자 서비스를 제공하므로 옳다.
문제 4
다음 정렬 알고리즘의 수행시간을 Big-O 표기법으로 나타냈을 때 최악의 경우의 수행시간이 같은 것들로만 나열된 것은?
선택 정렬(selection sort), 합병 정렬(merge sort),
삽입 정렬(insertion sort), 퀵 정렬(quick sort), 힙 정렬(heap sort)
1합병 정렬, 퀵 정렬, 힙 정렬
2힙 정렬, 선택 정렬, 퀵 정렬
3합병 정렬, 선택 정렬, 삽입 정렬
4합병 정렬, 힙 정렬, 삽입 정렬
5선택 정렬, 삽입 정렬, 퀵 정렬
정답 및 해설

최악 수행시간이 같은 조합은 선택 정렬, 삽입 정렬, 퀵 정렬이다.

이 세 정렬의 최악은 모두 O(n2)O(n^2)이다. 반면 합병 정렬과 힙 정렬은 최악에도 O(nlog⁡n)O(n \log n)이다.

  • 합병 정렬, 퀵 정렬, 힙 정렬: 퀵 정렬만 최악이 O(n2)O(n^2)이다.
  • 힙 정렬, 선택 정렬, 퀵 정렬: 힙 정렬만 최악이 O(nlog⁡n)O(n \log n)이다.
  • 합병 정렬, 선택 정렬, 삽입 정렬: 합병 정렬만 최악이 O(nlog⁡n)O(n \log n)이다.
  • 합병 정렬, 힙 정렬, 삽입 정렬: 삽입 정렬만 최악이 O(n2)O(n^2)이다.
문제 5
관계형 데이터베이스(relational database)에 대한 설명으로 옳은 것을 <보기>에서 모두 고르면?
<보기>
ㄱ. 스키마 변환 시 정보의 무손실, 자료 중복의 감소, 관련된 구조 간의 통합의 원칙을 준수하여야 한다.
ㄴ. 관계대수(relational algebra)의 연산에서 피연산자는 모두 릴레이션이지만 연산결과는 릴레이션이 아니다.
ㄷ. 릴레이션에 연산을 수행 시 삽입이상(insertion anomaly), 삭제이상(deletion anomaly), 갱신이상(update anomaly)이 발생할 수 있다.
ㄹ. 튜플을 구성하는 속성 사이에 존재하는 종속관계를 고려하지 않고 하나의 릴레이션으로 표현하여 이상(anomaly)을 해결할 수 있다.
ㅁ. 릴레이션이 여러 속성을 표현할 때 이를 작게 분해(decomposition)하는 과정을 정규화(normalization)라고 한다.
ㅂ. 릴레이션들은 관계대수(relational algebra)로 조작이 가능하다.
1ㄱ, ㄴ, ㄷ
2ㄴ, ㄷ, ㄹ
3ㄴ, ㄹ, ㅁ
4ㄷ, ㄹ, ㅂ
5ㄷ, ㅁ, ㅂ
정답 및 해설

옳은 것은 ㄷ, ㅁ, ㅂ이다.

각 지문을 판정하면 ㄷ, ㅁ, ㅂ만 참이고, 이 세 지문으로만 이루어진 조합은 하나뿐이다.

  • ㄱ(X): 정규화의 스키마 변환 원칙은 정보의 무손실, 중복 감소, 분리의 원칙이다. 관련 구조의 통합이 아니다.
  • ㄴ(X): 관계대수는 연산 결과도 릴레이션이다(폐쇄 성질).
  • ㄷ(O): 설계가 잘못된 릴레이션에서는 삽입·삭제·갱신 이상이 발생할 수 있다.
  • ㄹ(X): 종속관계를 무시하고 한 릴레이션에 모으면 이상이 해결되지 않고 오히려 생긴다.
  • ㅁ(O): 여러 속성을 가진 릴레이션을 작게 분해하는 과정이 정규화이다.
  • ㅂ(O): 릴레이션은 관계대수로 조작할 수 있다.
문제 6
후위표기법(postfix notation)으로 된 다음 식의 전위표기법(prefix notation)으로 옳은 것은?
ABC+D/-AE+BF*/+
1+-A/+BCD/+AE*BF
2-+A/BC+D/+AE*BF
3+-A/+BCD/+*AEBF
4+A-/+BCD/+AE*BF
5-+/A+BCD/+*AEBF
정답 및 해설

주어진 식의 전위표기는 +-A/+BCD/+AE*BF이다.

스택 방식으로 후위식을 읽어 부분식을 묶는다.
왼쪽 부분: ABC+D/- → A - ((B+C)/D)
오른쪽 부분: AE+BF*/ → (A+E)/(B*F)
마지막 +가 두 부분을 더한다.

각 부분을 전위로 바꾸면 왼쪽은 -A/+BCD, 오른쪽은 /+AE*BF이고, 맨 앞에 최상위 연산자 +를 붙인다.

  • -+A/BC+D/+AE*BF: 최상위 연산자가 -로 시작하므로 틀리다.
  • +-A/+BCD/+*AEBF: 오른쪽이 ((A*E)+B)/F가 되어 틀리다.
  • +A-/+BCD/+AE*BF: 최상위 +의 왼쪽 피연산자가 A 하나가 되어 틀리다.
  • -+/A+BCD/+*AEBF: 최상위 연산자가 -로 시작하므로 틀리다.
문제 7
다음 카르노 맵에 해당하는 논리식 F로 옳은 것은?
BC\A01
0001
0100
1110
1010
1F = AB + AB′C
2F = A′B′ + A′B′C′
3F = AB′ + A′BC
4F = A′B + AB′C′
5F = AB + BC
정답 및 해설

맵을 간소화한 논리식은 F = A′B + AB′C′이다.

A=0 열에서는 BC가 11, 10일 때 1이므로 두 칸을 묶어 A′B가 된다.

A=1 열에서는 BC가 00인 칸만 1이므로 AB′C′이고, 이 칸은 인접한 1과 묶이지 않는다.

  • AB + AB′C: A=1, BC=10에서 1이 되지만 맵의 값은 0이다.
  • A′B′ + A′B′C′: A=0, BC=00에서 1이 되지만 맵의 값은 0이다.
  • AB′ + A′BC: A=1, BC=01에서 1이 되지만 맵의 값은 0이다.
  • AB + BC: A=1, BC=11에서 1이 되지만 맵의 값은 0이다.
문제 8
가상 메모리 시스템에서 메모리 부족 시의 페이지 교체 기법(page replacement algorithm)들에 대한 설명으로 옳지 않은 것은?
1LRU(Least Recently Used) 기법은 메모리에 적재된 페이지 중 가장 오랫동안 참조되지 않았던 페이지를 교체하는 기법이다.
2LRU 기법은 실제 그 구현 오버헤드가 커서, 일반적으로 오버헤드를 줄인 여러 유형의 LRU 근사 알고리즘(LRU approximation algorithm)들이 사용되는 것이 보통이다.
3LRU 기법은 물리적 페이지의 개수를 확장했음에도 페이지 폴트가 늘어나는 경우가 발생할 수도 있는데, 이를 Belady’s anomaly라 한다.
4이론적으로는 최적의 페이지 교체 기법은 메모리에 적재된 페이지들 중에서 앞으로 가장 오랫동안 참조되지 않을 페이지를 교체하는 것이다.
5FIFO(First In First Out) 기법은 메모리에 적재된 페이지들 중 가장 먼저 메모리에 적재된 페이지를 교체하는 방법이다.
정답 및 해설

옳지 않은 것은 Belady’s anomaly를 LRU의 현상으로 설명한 것이다.

페이지 프레임을 늘렸는데 페이지 폴트가 늘어나는 현상은 FIFO에서 나타난다. LRU는 스택 알고리즘에 속해 이 이상이 발생하지 않는다.

  • LRU의 정의: 가장 오랫동안 참조되지 않은 페이지를 교체하므로 옳다.
  • LRU 근사 알고리즘: 정확한 LRU는 오버헤드가 커서 근사 기법을 쓰므로 옳다.
  • 최적 페이지 교체: 앞으로 가장 오랫동안 참조되지 않을 페이지를 교체하는 것이 이론적 최적이므로 옳다.
  • FIFO의 정의: 가장 먼저 적재된 페이지를 교체하므로 옳다.
문제 9
요즘 집안에서 스마트폰 및 컴퓨터의 인터넷 접속을 위하여 공유기의 사용이 일반화되어 있다. 공유기에 접속하는 컴퓨터 디바이스에는 사설 IP가 주로 할당되는데 이때 IP주소의 자동 할당을 위해 사용되는 프로토콜로 옳은 것은?
1ARP
2DHCP
3TCP
4UDP
5ICMP
정답 및 해설

IP 주소를 자동으로 할당하는 프로토콜은 DHCP이다.

공유기의 DHCP 서버가 접속한 기기에 사설 IP 주소, 게이트웨이, DNS 서버 정보 등을 임대해 준다.

  • ARP: IP 주소에 대응하는 MAC 주소를 찾는 프로토콜이다.
  • TCP: 연결 지향의 신뢰성 있는 전송 계층 프로토콜이다.
  • UDP: 비연결형 전송 계층 프로토콜이다.
  • ICMP: 오류 보고와 진단 메시지를 전달하는 프로토콜이다.
문제 10
다음의 C 프로그램 실행 결과로 출력되는 a, b, c 값으로 옳은 것은?
#include <stdio.h>
int foo(int a, int *b)
{
        int c;
        *b = a + 1;
        c = a - 1;
        return c;
}
void main()
{
    int a = 5;
    int b = 3;
    int c = 0;
    b = foo(a, &c);
    c = foo(b, &a);
    printf("a=%d b=%d c=%d\n", a, b, c);
}
15, 4, 3
24, 3, 2
36, 3, 4
44, 3, 5
55, 3, 0
정답 및 해설

출력되는 값은 a=5, b=4, c=3이다.

foo는 포인터가 가리키는 변수에 a+1을 넣고 a-1을 반환한다. 초기값은 a=5, b=3, c=0이다.

첫 호출 b = foo(a, &c): 인자 5이므로 c = 6, 반환값 4가 b에 대입되어 b = 4이다.
둘째 호출 c = foo(b, &a): 인자 4이므로 a = 5, 반환값 3이 c에 대입되어 c = 3이다.

  • 4, 3, 2: a는 둘째 호출에서 5가 되고 b는 첫 호출의 반환값 4이므로 틀리다.
  • 6, 3, 4: 6은 첫 호출에서 c에 들어간 값이고 둘째 호출의 반환값 3으로 덮어써지며, b도 3이 아니므로 틀리다.
  • 4, 3, 5: 둘째 호출에서 a가 5, c가 3이 되므로 틀리다.
  • 5, 3, 0: b와 c를 초기값 그대로 둔 값으로, 두 변수 모두 호출 결과로 바뀌므로 틀리다.
문제 11
데이터베이스에서 사용하는 뷰(view)에 대한 설명으로 옳은 것을 <보기>에서 모두 고르면?
<보기>
ㄱ. 뷰의 정의는 변경할 수 없다.
ㄴ. 뷰는 삽입, 갱신, 삭제 연산에 제약이 있다.
ㄷ. 뷰 위에 다른 뷰를 정의할 수 없다.
ㄹ. 뷰가 정의된 테이블이 삭제되더라도 뷰는 남는다.
ㅁ. 뷰는 물리적으로 구현되는 테이블이다.
1ㄱ, ㄴ
2ㄱ, ㅁ
3ㄴ, ㄷ
4ㄷ, ㄹ
5ㄹ, ㅁ
정답 및 해설

옳은 것은 ㄱ, ㄴ이다.

뷰는 기본 테이블에서 유도된 가상 테이블이라는 점에서 나머지 지문의 판정이 나온다.

  • ㄱ(O): 표준 SQL에는 뷰 정의를 고치는 ALTER 문이 없어, 삭제 후 다시 생성한다.
  • ㄴ(O): 뷰를 통한 삽입·갱신·삭제에는 제약이 있다.
  • ㄷ(X): 뷰 위에 다른 뷰를 정의할 수 있다.
  • ㄹ(X): 기본 테이블이 삭제되면 그에 의존하는 뷰는 함께 삭제되거나 사용할 수 없게 된다.
  • ㅁ(X): 뷰는 물리적으로 저장되지 않는 가상 테이블이다.
문제 12
프로세스(process)나 스레드(thread)들이 공유 자원에 하나 이상의 수정(write 또는 modify) 연산을 포함하는 동시 접근을 할 때 그 접근 부분들을 임계 구역(critical section)이라 한다. 이를 보호하기 위한 병행 프로세스 동기화 기법으로 옳은 것은?
1인터럽트(interrupt)
2선점 스케줄링(preemptive scheduling)
3문맥교환(context switching)
4상호배제(mutual exclusion)
5교착상태(deadlock)
정답 및 해설

임계 구역을 보호하는 기법은 상호배제(mutual exclusion)이다.

한 프로세스나 스레드가 임계 구역에 있는 동안 다른 쪽의 진입을 막아 공유 자원의 경쟁 상태를 방지한다.

  • 인터럽트: 예외나 입출력 완료 같은 사건을 CPU에 알리는 메커니즘이다.
  • 선점 스케줄링: 실행 중인 프로세스에서 CPU를 빼앗을 수 있는 스케줄링 방식이다.
  • 문맥교환: CPU를 다른 프로세스로 넘길 때 상태를 저장하고 복원하는 과정이다.
  • 교착상태: 서로 상대의 자원을 기다리며 진행하지 못하는 현상으로, 보호 기법이 아니다.
문제 13
배열 int array[10][200]를 행우선순서(row major order)로 저장하는 경우의 원소 array[7][12]의 시작주소는 몇 번지인가?
(단, 배열 array의 시작주소는 10840h로, int의 크기는 4바이트로 가정한다. 배열 첨자는 0부터 시작하며 숫자에 붙은 h는 16진수 표기를 의미한다.)
110804h
211E50h
316488h
4108BFh
510A3Ch
정답 및 해설

원소 array[7][12]의 시작주소는 11E50h이다.

행우선에서는 앞선 7개 행과 현재 행의 12개 원소를 건너뛴다.
공식: 시작주소 + (행 × 열 크기 + 열) × 원소 크기
오프셋: (7×200+12)×4=5648(7 \times 200 + 12) \times 4 = 5648
16진수 변환: 5648 = 1610h
주소: 10840h + 1610h = 11E50h

  • 16488h: 10840에 5648을 십진수로 더한 값으로, 16진수 변환을 빠뜨린 결과이다.
  • 10804h: 배열 시작주소 10840h보다 작아 배열 안의 주소가 될 수 없다.
  • 108BFh: 끝자리가 홀수로, 4바이트 원소의 시작주소 간격에 맞지 않는다.
  • 10A3Ch: 열우선으로 계산한 값 (12×10+7)×4=508(12 \times 10 + 7) \times 4 = 508을 더한 결과로, 행우선 조건에 맞지 않는다.
문제 14
다음은 마트에서 판매 기록을 저장한 트랜잭션(transaction) 데이터이다. 규칙 “기저귀” -> “맥주”의 신뢰도(confidence) 값으로 옳은 것은?
식별자품목
1맥주, 땅콩, 기저귀
2맥주, 커피, 기저귀
3맥주, 기저귀, 계란
4땅콩, 계란, 우유
5땅콩, 커피, 기저귀, 우유
10.33
20.5
30.75
40.8
51.00
정답 및 해설

규칙 기저귀 → 맥주의 신뢰도는 0.75이다.

신뢰도는 기저귀를 포함한 거래 중 맥주도 포함한 거래의 비율이다.
기저귀 포함 거래: 식별자 1, 2, 3, 5로 4건
기저귀와 맥주 동시 포함 거래: 식별자 1, 2, 3으로 3건
신뢰도: 34=0.75\dfrac{3}{4} = 0.75

  • 0.33: 분모를 3건으로 잡아야 나오는 비율이지만 기저귀 포함 거래는 4건이다.
  • 0.5: 기저귀 포함 4건 중 2건으로 센 값이지만 동시 포함 거래는 3건이다.
  • 0.8: 전체 5건 중 기저귀가 포함된 비율 45\dfrac{4}{5}로, 기저귀의 지지도이다.
  • 1.00: 맥주가 포함된 3건 모두에 기저귀가 있다는 값으로, 방향이 반대인 규칙 맥주 → 기저귀의 신뢰도이다.
문제 15
사용자가 WWW(World Wide Web)을 사용하여 임의의 사이트에 접속하는 과정의 설명으로 옳지 않은 것은?
1사용자의 웹브라우저에서 DNS 서버로 DNS 질의 메시지를 보낸다.
2DNS 간의 질의는 재귀형(recursive) 또는 반복형(iterative)으로 연계된다.
3사용자의 웹브라우저는 DNS 서버로부터 사이트의 웹 서버 MAC 주소를 획득한다.
4HTTP 요청 메시지를 보내기 전에 TCP 3-방향 핸드셰이크를 수행한다.
5웹 서버가 보낸 HTTP 응답 메시지의 바디로부터 HTML을 추출하여 웹 페이지를 보여준다.
정답 및 해설

옳지 않은 것은 DNS 서버로부터 웹 서버의 MAC 주소를 얻는다는 설명이다.

DNS가 알려 주는 것은 도메인 이름에 대응하는 IP 주소이다. MAC 주소는 같은 네트워크 안의 다음 홉을 찾을 때 ARP로 얻는다.

  • DNS 질의 메시지: 접속 시 이름 해석을 위해 DNS 서버에 질의를 보내므로 옳다.
  • DNS 간 질의: 재귀형 또는 반복형으로 연계되므로 옳다.
  • TCP 3-방향 핸드셰이크: HTTP 요청 전에 연결을 수립하므로 옳다.
  • HTTP 응답 처리: 응답 바디의 HTML을 해석해 페이지를 표시하므로 옳다.
문제 16
1과 1000 사이의 정수로 구성된 이진탐색트리(binary search tree)에서 숫자 573을 탐색하는 경우 다음 중 비교경로로 옳지 않은 것은?
12, 173, 241, 856, 301, 489, 710, 516, 573
27, 816, 68, 714, 121, 561, 278, 395, 573
3981, 825, 693, 38, 137, 608, 224, 461, 573
4926, 139, 884, 278, 734, 319, 662, 481, 573
514, 970, 831, 765, 111, 249, 318, 473, 573
정답 및 해설

비교경로로 옳지 않은 것은 7, 816, 68, 714, 121, 561, 278, 395, 573이다.

이진탐색트리에서는 573보다 작은 값을 만나면 하한이, 큰 값을 만나면 상한이 갱신되고, 이후 값은 그 범위 안에 있어야 한다.

이 경로는 561까지 범위가 561~714로 좁혀졌는데, 다음 값 278이 범위 밖이므로 불가능하다.

  • 2, 173, 241, 856, 301, 489, 710, 516, 573: 모든 값이 범위 안이며 마지막 범위 516~710에 573이 있다.
  • 981, 825, 693, 38, 137, 608, 224, 461, 573: 모든 값이 범위 안이며 마지막 범위 461~608에 573이 있다.
  • 926, 139, 884, 278, 734, 319, 662, 481, 573: 모든 값이 범위 안이며 마지막 범위 481~662에 573이 있다.
  • 14, 970, 831, 765, 111, 249, 318, 473, 573: 모든 값이 범위 안이며 마지막 범위 473~765에 573이 있다.
문제 17
유니버설 게이트 집합(universal gate set)은 그 구성 원소만으로 어떤 형태의 디지털 시스템도 구현할 수 있는 기능적으로 완전한 게이트들의 집합이다. 다음 중 유니버설 게이트 집합으로 옳지 않은 것은?
1{ NAND }
2{ OR, DECODER }
3{ MULTIPLEXER }
4{ OR, NOT }
5{ XOR }
정답 및 해설

유니버설 게이트 집합이 아닌 것은 { XOR }이다.

XOR를 아무리 조합해도 출력은 입력 일부를 XOR한 형태에 머물러 AND 기능을 만들 수 없다.

  • { NAND }: NAND만으로 NOT, AND, OR를 모두 만들 수 있다.
  • { OR, DECODER }: 디코더가 모든 최소항을 만들고 OR로 합치면 임의의 논리함수를 구현할 수 있다.
  • { MULTIPLEXER }: 선택선에 입력을 넣고 데이터 입력에 상수나 변수를 주어 임의의 논리함수를 구현할 수 있다.
  • { OR, NOT }: 드모르간 법칙으로 AND를 만들 수 있다.
문제 18
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

int recursion(int n)
{
        if (n < 5) return 1;
        else   if (n % 5 == 1) return n + recursion(n - 1);
        else    recursion(n - 1);
}

int main()
{
        int n    = recursion(16);
        printf("%d",    n);

        return    0;
}
134
233
331
429
528
정답 및 해설

프로그램의 출력값은 34이다.

n을 5로 나눈 나머지가 1일 때만 n을 더하고, 그 외에는 n-1로 내려간다. 마지막 else에 return이 없어 표준상 미정의 동작이지만, 재귀 결과가 그대로 전달된다고 보고 추적한다.

r(16) = 16 + r(15), r(15)부터 r(12)까지는 r(11)로 내려간다.
r(11) = 11 + r(10), r(10)부터 r(7)까지는 r(6)으로 내려간다.
r(6) = 6 + r(5), r(5) = r(4) = 1이다.
합계: 16 + 11 + 6 + 1 = 34

  • 33: 기저 사례의 반환값 1을 빠뜨린 값이다.
  • 31: 합계 16 + 11 + 6 + 1보다 3 작아 추적 결과와 맞지 않는다.
  • 29: 합계 16 + 11 + 6 + 1보다 5 작아 추적 결과와 맞지 않는다.
  • 28: n = 6에서의 덧셈을 빠뜨린 값이다.
문제 19
인터넷에서 주로 사용하는 TCP와 UDP에 대한 설명으로 옳지 않은 것은?
1TCP에는 네트워크 상 트래픽이 폭주하는 현상을 방지하는 혼잡 제어(congestion control) 기능이 포함되어 있다.
2UDP는 비신뢰적이고 비연결형인 서비스를 제공한다.
3TCP는 패킷 손실이 발생했을 때, 패킷 재전송 기능을 수행한다.
4UDP 패킷 헤더에는 출발지 포트 번호, 목적지 포트 번호, 길이, 체크섬 등의 정보를 담고 있다.
5TCP는 신뢰적인 데이터 전달은 보장하지만, 수신 프로세스에게 데이터가 올바른 순서로 전달되는 것은 보장하지 못한다.
정답 및 해설

옳지 않은 것은 TCP가 올바른 순서의 전달을 보장하지 못한다는 설명이다.

TCP는 순서 번호로 세그먼트를 재정렬하여 수신 프로세스에 바이트 스트림을 순서대로 전달한다.

  • 혼잡 제어: TCP는 네트워크 폭주를 막는 혼잡 제어 기능을 포함하므로 옳다.
  • UDP의 서비스: 비신뢰적이고 비연결형이므로 옳다.
  • 패킷 재전송: TCP는 손실이 감지되면 재전송하므로 옳다.
  • UDP 헤더: 출발지 포트, 목적지 포트, 길이, 체크섬으로 구성되므로 옳다.
문제 20
다음 중 회선 교환 방식(circuit switching)의 특성으로 옳지 않은 것은?
1데이터를 주고 받기 전에 종단 간 연결(end to end connnection) 과정이 필요하다.
2연결이 수립되면, 해당 회선을 독점적으로 사용한다.
3회선 교환 방식의 대표적인 예로는 전화망이 있다.
4패킷 교환 방식(packet switching)에 비해 더 많은 동시 접속자를 수용할 수 있다.
5패킷 교환 방식에 비해 안정적인 전송속도를 보장할 수 있다.
정답 및 해설

옳지 않은 것은 패킷 교환보다 더 많은 동시 접속자를 수용할 수 있다는 설명이다.

회선 교환은 연결마다 자원을 고정 점유하므로 수용 인원이 제한된다. 패킷 교환은 회선을 공유하여 더 많은 사용자를 수용한다.

  • 종단 간 연결: 데이터 전송 전에 연결 설정 과정이 필요하므로 옳다.
  • 회선 독점: 연결이 수립되면 해당 회선을 독점하므로 옳다.
  • 전화망: 회선 교환의 대표 사례이므로 옳다.
  • 안정적 전송속도: 자원이 예약되어 있어 일정한 속도를 보장하기 쉬우므로 옳다.