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

15년 1회차

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

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

15년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
시스템 소프트웨어에 포함되지 않는 것은?
1스프레드시트(spreadsheet)
2로더(loader)
3링커(linker)
4운영체제(operating system)
정답 및 해설

시스템 소프트웨어에 포함되지 않는 것은 스프레드시트이다.

스프레드시트는 표 계산이라는 사용자 업무를 위한 응용 소프트웨어이다. 시스템 소프트웨어는 컴퓨터를 운영·관리하고 프로그램 실행을 지원한다.

  • 로더 — 실행 프로그램을 주기억장치에 적재하는 시스템 소프트웨어이다.
  • 링커 — 목적 프로그램들을 연결하는 시스템 소프트웨어이다.
  • 운영체제 — 대표적인 시스템 소프트웨어이다.
문제 2
OSI 7계층 중 브리지(bridge)가 복수의 LAN을 결합하기 위해 동작하는 계층은?
1물리 계층
2데이터 링크 계층
3네트워크 계층
4전송 계층
정답 및 해설

브리지가 동작하는 계층은 데이터 링크 계층이다.

브리지는 프레임의 MAC 주소를 보고 중계·필터링하여 여러 LAN 세그먼트를 연결한다.

  • 물리 계층 — 신호를 증폭·재생하는 리피터·허브가 동작한다.
  • 네트워크 계층 — IP 주소로 경로를 정하는 라우터가 동작한다.
  • 전송 계층 — 종단 간 전송을 다루며 브리지와 무관하다.
문제 3
데이터베이스 설계 과정에서 목표 DBMS의 구현 데이터 모델로 표현된 데이터베이스 스키마가 도출되는 단계는?
1요구사항 분석 단계
2개념적 설계 단계
3논리적 설계 단계
4물리적 설계 단계
정답 및 해설

해당 단계는 논리적 설계 단계이다.

논리적 설계는 개념적 설계의 결과(E-R 다이어그램 등)를 목표 DBMS의 데이터 모델(예: 관계형 스키마)로 변환하는 단계이다.

  • 요구사항 분석 — 사용자 요구를 수집·명세한다.
  • 개념적 설계 — DBMS와 독립적인 개념 스키마(E-R 모델)를 만든다.
  • 물리적 설계 — 저장 구조·인덱스·접근 경로를 설계한다.
문제 4
객체지향 프로그래밍의 특징 중 상속 관계에서 상위 클래스에 정의된 메소드(method) 호출에 대해 각 하위 클래스가 가지고 있는 고유한 방법으로 응답할 수 있도록 유연성을 제공하는 것은?
1재사용성(reusability)
2추상화(abstraction)
3다형성(polymorphism)
4캡슐화(encapsulation)
정답 및 해설

설명하는 특징은 다형성(polymorphism)이다.

다형성은 같은 메소드 호출에 대해 객체(하위 클래스)마다 고유한 방식으로 응답하는 성질로, 주로 오버라이딩으로 구현된다.

  • 재사용성 — 기존 클래스를 다시 활용하는 성질이다.
  • 추상화 — 공통 특성만 뽑아 단순화하는 것이다.
  • 캡슐화 — 데이터와 메소드를 묶고 내부를 숨기는 것이다.
문제 5
다음은 캐시 기억장치를 사상(mapping) 방식 기준으로 분류한 것이다. 캐시 블록은 4개 이상이고 사상 방식을 제외한 모든 조건이 동일하다고 가정할 때, 평균적으로 캐시 적중률(hit ratio)이 높은 것에서 낮은 것 순으로 바르게 나열한 것은?

ㄱ. 직접 사상(direct-mapped)
ㄴ. 완전 연관(fully-associative)
ㄷ. 2-way 집합 연관(set-associative)

1ㄱ-ㄴ-ㄷ
2ㄴ-ㄷ-ㄱ
3ㄷ-ㄱ-ㄴ
4ㄱ-ㄷ-ㄴ
정답 및 해설

적중률이 높은 순서는 ㄴ-ㄷ-ㄱ이다.

블록이 들어갈 수 있는 위치가 많을수록 충돌로 인한 교체가 줄어 적중률이 높다.

  • 완전 연관 — 캐시의 어느 블록에나 들어갈 수 있어 적중률이 가장 높다.
  • 2-way 집합 연관 — 정해진 집합 안의 2곳 중 하나에 들어간다.
  • 직접 사상 — 정해진 한 곳에만 들어가 충돌이 가장 잦다.
문제 6
다음 논리회로의 부울식으로 옳은 것은?
1F = AC' + BC
2F(A, B, C) = Σm(0, 1, 2, 3, 6, 7)
3F = (AC')'
4F = (A' + B' + C)(A+ B' + C')
정답 및 해설

회로의 부울식은 F = (AC')'이다.

위쪽 NAND 게이트에는 A와 인버터를 거친 C'가, 아래쪽 AND 게이트에는 B와 C가 들어가며 두 출력이 OR된다.
F = (AC')' + BC = A' + C + BC

BC는 C에 흡수되므로 F = A' + C = (AC')'이다.

  • AC' + BC — 위쪽 게이트를 NAND가 아닌 AND로 본 식이다.
  • Σm(0, 1, 2, 3, 6, 7) — A' + B에 해당해 A=1, B=0, C=1(m5)을 빠뜨린다.
  • (A'+B'+C)(A+B'+C') — A=0, B=1, C=1에서 0이 되어 A' + C와 다르다.
문제 7
소프트웨어 개발 프로세스 모델 중 하나인 나선형 모델(spiral model)에 대한 설명으로 옳지 않은 것은?
1폭포수(waterfall) 모델과 원형(prototype) 모델의 장점을 결합한 모델이다.
2점증적으로 개발을 진행하여 소프트웨어 품질을 지속적으로 개선할 수 있다.
3위험을 분석하고 최소화하기 위한 단계가 포함되어 있다.
4관리가 복잡하여 대규모 시스템의 소프트웨어 개발에는 적합하지 않다.
정답 및 해설

옳지 않은 것은 관리가 복잡하여 대규모 시스템 개발에 적합하지 않다는 설명이다.

나선형 모델은 반복마다 위험 분석을 수행하므로 위험 요소가 많은 대규모 시스템 개발에 적합하다. 관리가 복잡한 것은 단점이지만, 그 때문에 대규모에 부적합한 것은 아니다.

  • 폭포수 모델과 원형 모델의 장점을 결합했다 — 옳다.
  • 점증적으로 개발하며 품질을 지속적으로 개선한다 — 옳다.
  • 위험 분석·최소화 단계가 포함되어 있다 — 옳다.
문제 8
다음 표는 단일 CPU에 진입한 프로세스의 도착 시간과 처리하는 데 필요한 실행 시간을 나타낸 것이다. 프로세스 간 문맥 교환에 따른 오버헤드는 무시한다고 할 때, SRT(Shortest Remaining Time) 스케줄링 알고리즘을 사용한 경우 네 프로세스의 평균 반환시간(turnaround time)은?
프로세스도착 시간실행 시간
P108
P224
P341
P464
14.25
27
38.75
410
정답 및 해설

평균 반환시간은 7이다.

SRT는 새 프로세스가 도착할 때마다 남은 실행 시간이 가장 짧은 프로세스에 CPU를 준다(선점형).

  • 0~2: P1 실행(남은 6) → P2(4) 도착, P2로 교체
  • 2~4: P2 실행(남은 2) → P3(1) 도착, P3로 교체
  • 4~5: P3 완료
  • 5~7: P2 완료(6에 도착한 P4는 4라 P2의 남은 1보다 길다)
  • 7~11: P4 완료, 11~17: P1 완료

반환시간 = 종료 − 도착: P1 17, P2 5, P3 1, P4 5
평균 = 28 ÷ 4 = 7

문제 9
이더넷(Ethernet)의 매체 접근 제어(MAC) 방식인 CSMA/CD에 대한 설명으로 옳지 않은 것은?
1CSMA/CD 방식은 CSMA 방식에 충돌 검출 기법을 추가한 것으로 IEEE 802.11b의 MAC 방식으로 사용된다.
2충돌 검출을 위해 전송 프레임의 길이를 일정 크기 이상으로 유지해야 한다.
3전송 도중 충돌이 발생하면 임의의 시간 동안 대기하기 때문에 지연시간을 예측하기 어렵다.
4여러 스테이션으로부터의 전송 요구량이 증가하면 회선의 유효 전송률은 단일 스테이션에서 전송할 때 얻을 수 있는 유효 전송률보다 낮아지게 된다.
정답 및 해설

옳지 않은 것은 CSMA/CD가 IEEE 802.11b의 MAC 방식으로 사용된다는 설명이다.

CSMA/CD는 유선 이더넷(IEEE 802.3)의 방식이다. 무선 LAN(IEEE 802.11 계열)은 충돌 감지가 어려워 CSMA/CA를 사용한다.

  • 충돌 검출을 위해 프레임 길이를 일정 크기 이상으로 유지한다 — 옳다(최소 프레임 길이).
  • 충돌 시 임의 시간 대기(백오프)로 지연을 예측하기 어렵다 — 옳다.
  • 전송 요구가 늘면 충돌이 늘어 유효 전송률이 낮아진다 — 옳다.
문제 10
다음은 C언어로 내림차순 버블정렬 알고리즘을 구현한 함수이다. ㉠에 들어갈 if문의 조건으로 올바른 것은? (단, size는 1차원 배열인 value의 크기이다)
void BubbleSorting(int *value, int size) {
   int x, y, temp;
   for(x = 0 x < size x++) {
      for(y = 0 y < size - x - 1 y++) {
         if( ㉠ ) {
            temp = value[y];
            value[y] = value[y+1];
            value[y+1] = temp
         }
      }
   }
}
1value[x] > value[y+1]
2value[x] < value[y+1]
3value[y] > value[y+1]
4value[y] < value[y+1]
정답 및 해설

㉠에 들어갈 조건은 value[y] < value[y+1]이다.

버블 정렬은 인접한 value[y]와 value[y+1]을 비교해 순서가 틀리면 교환한다. 내림차순은 큰 값이 앞에 와야 하므로 앞의 값이 뒤의 값보다 작을 때 교환한다.

  • value[y] > value[y+1] — 앞이 클 때 교환하므로 오름차순 정렬이 된다.
  • value[x] > value[y+1] — 교환 대상인 인접 원소(value[y])가 아닌 value[x]를 비교해 버블 정렬이 되지 않는다.
  • value[x] < value[y+1] — 같은 이유로 인접 원소 비교가 아니다.
문제 11
객체지향 기법을 지원하지 않는 프로그래밍 언어는?
1LISP
2Java
3Python
4C#
정답 및 해설

객체지향 기법을 지원하지 않는 언어로 제시된 것은 LISP이다.

LISP는 리스트 처리를 위해 만들어진 대표적인 함수형 언어로, 객체지향 언어로 분류되지 않는다.

  • Java — 클래스 기반의 대표적인 객체지향 언어이다.
  • Python — 클래스·상속 등 객체지향을 지원하는 다중 패러다임 언어이다.
  • C# — 마이크로소프트의 객체지향 언어이다.
문제 12
관계형 모델(relational model)의 릴레이션(relation)에 대한 설명으로 옳지 않은 것은?
1릴레이션의 한 행(row)을 투플(tuple)이라고 한다.
2속성(attribute)은 릴레이션의 열(column)을 의미한다.
3한 릴레이션에 존재하는 모든 투플들은 상이해야 한다.
4한 릴레이션의 속성들은 고정된 순서를 갖는다.
정답 및 해설

옳지 않은 것은 한 릴레이션의 속성들은 고정된 순서를 갖는다는 설명이다.

릴레이션에서 속성(열)과 투플(행)에는 순서가 없다. 속성은 순서가 아니라 이름으로 구별한다.

  • 한 행을 투플이라 한다 — 옳다.
  • 속성은 릴레이션의 열이다 — 옳다.
  • 모든 투플은 서로 달라야 한다 — 옳다(중복 투플 불허).
문제 13
컴퓨터 버스에 대한 설명으로 옳지 않은 것은?
1주소 정보를 전달하는 주소 버스(address bus), 데이터 전송을 위한 데이터 버스(data bus), 그리고 명령어 전달을 위한 명령어 버스(instruction bus)로 구성된다.
23-상태(3-state) 버퍼를 이용하면 데이터를 송신하고 있지 않는 장치의 출력이 버스에 연결된 다른 장치와 간섭하지 않도록 분리시킬 수 있다.
3특정 장치를 이용하면 버스를 통해서 입출력 장치와 주기억 장치 간 데이터가 CPU를 거치지 않고 전송될 수 있다.
4다양한 장치를 연결하기 위한 별도의 버스가 추가적으로 존재할 수 있다.
정답 및 해설

옳지 않은 것은 버스가 주소 버스, 데이터 버스, 명령어 버스로 구성된다는 설명이다.

시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성된다. 명령어도 메모리에서 읽어 올 때는 데이터 버스로 전달된다.

  • 3-상태 버퍼로 송신하지 않는 장치를 버스에서 분리할 수 있다 — 옳다.
  • DMA 제어기를 이용하면 CPU를 거치지 않고 전송할 수 있다 — 옳다.
  • 다양한 장치 연결을 위한 별도 버스(입출력 버스 등)가 있을 수 있다 — 옳다.
문제 14
다음 이진 트리(binary tree)의 노드들을 후위 순회(post-order traversal)한 경로를 나타낸 것은?
1F→H→I→D→E→G→B→C→A
2D→F→E→B→H→I→G→C→A
3D→B→F→E→A→C→H→G→I
4I→H→G→C→F→E→D→B→A
정답 및 해설

후위 순회 경로는 D→F→E→B→H→I→G→C→A이다.

후위 순회는 왼쪽 서브트리 → 오른쪽 서브트리 → 루트 순으로 방문한다.

  • A의 왼쪽 서브트리(B): D → (E의 서브트리: F → E) → B
  • A의 오른쪽 서브트리(C): (G의 서브트리: H → I → G) → C
  • 마지막으로 루트 A
  • F→H→I→D→E→G→B→C→A — 왼쪽 서브트리를 끝내기 전에 오른쪽의 H, I를 방문해 후위 순회가 아니다.
  • D→B→F→E→A→C→H→G→I — 중위 순회 결과이다.
  • I→H→G→C→F→E→D→B→A — 전위 순회(A→B→D→E→F→C→G→H→I)를 거꾸로 적은 것이다.
문제 15
프로토콜에 대한 설명으로 옳지 않은 것은?
1ARP는 데이터 링크 계층의 프로토콜로 MAC 주소에 대해 해당 IP 주소를 반환해 준다.
2UDP를 사용하면 일부 데이터의 손실이 발생할 수 있지만 TCP에 비해 전송 오버헤드가 적다.
3MIME는 텍스트, 이미지, 오디오, 비디오 등의 멀티미디어 전자우편을 위한 규약이다.
4DHCP는 한정된 개수의 IP 주소를 여러 사용자가 공유할 수 있도록 동적으로 가용한 주소를 호스트에 할당해준다.
정답 및 해설

옳지 않은 것은 ARP가 MAC 주소에 대해 해당 IP 주소를 반환한다는 설명이다.

ARP는 반대로 IP 주소로 MAC 주소를 알아내는 프로토콜이다. MAC 주소로 IP 주소를 얻는 것은 RARP이다.

  • UDP는 손실 가능성이 있지만 TCP보다 오버헤드가 적다 — 옳다.
  • MIME는 멀티미디어 전자우편 규약이다 — 옳다.
  • DHCP는 한정된 IP 주소를 동적으로 할당해 공유하게 한다 — 옳다.
문제 16
비결정적 유한 오토마타(non-deterministic finite automata)에 대한 설명으로 옳지 않은 것은?
1한 상태에서 전이 시 다음 상태를 선택할 수 있다.
2입력 심볼을 읽지 않고도 상태 전이를 할 수 있다.
3어떤 비결정적 유한 오토마타라도 같은 언어를 인식하는 결정적 유한 오토마타(deterministic finite automata)로 변환이 가능하다.
4모든 문맥 자유 언어(context-free language)를 인식한다.
정답 및 해설

옳지 않은 것은 모든 문맥 자유 언어를 인식한다는 설명이다.

비결정적 유한 오토마타는 결정적 유한 오토마타와 인식 능력이 같아 정규 언어만 인식한다. 문맥 자유 언어를 인식하려면 스택을 가진 푸시다운 오토마타가 필요하다.

  • 한 상태에서 다음 상태를 여러 개 중 선택할 수 있다 — 옳다.
  • 입력 없이 ε-전이를 할 수 있다 — 옳다.
  • 같은 언어를 인식하는 DFA로 변환할 수 있다 — 옳다(부분집합 구성법).
문제 17
클라우드 컴퓨팅 서비스 모델과 이에 대한 설명이 바르게 짝지어진 것은? (순서대로 IaaS, PaaS, SaaS)

ㄱ. 응용소프트웨어 개발에 필요한 개발 요소들과 실행 환경을 제공하는 서비스 모델로서, 사용자는 원하는 응용 소프트웨어를 개발할 수 있으나 운영체제나 하드웨어에 대한 제어는 서비스 제공자에 의해 제한된다.
ㄴ. 응용소프트웨어 및 관련 데이터는 클라우드에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 응용소프트웨어를 사용할 수 있다.
ㄷ. 사용자 필요에 따라 가상화된 서버, 스토리지, 네트워크 등의 인프라 자원을 제공한다.

1ㄷ, ㄴ, ㄱ
2ㄴ, ㄱ, ㄷ
3ㄷ, ㄱ, ㄴ
4ㄱ, ㄷ, ㄴ
정답 및 해설

IaaS, PaaS, SaaS 순으로 ㄷ, ㄱ, ㄴ이다.

세 모델은 제공하는 범위가 인프라 → 플랫폼 → 소프트웨어로 넓어진다.

  • IaaS — 가상화된 서버·스토리지·네트워크 인프라를 제공하므로 ㄷ이다.
  • PaaS — 개발 요소와 실행 환경(플랫폼)을 제공하고 OS·하드웨어 제어는 제한되므로 ㄱ이다.
  • SaaS — 응용 소프트웨어를 웹 브라우저로 바로 쓰게 하므로 ㄴ이다.
문제 18
다음 C 언어로 작성된 프로그램의 실행 결과에서 세 번째 줄에 출력되는 것은?
#include <stdio.h>
int func(int num) {
   if(num == 1)
      return 1;
   else
      return num * func(num - 1);
}
int main() {
   int i;
   for(i = 5 i >= 0 i--) {
      if(i % 2 == 1)
         printf("func(%d) : %d\n", i, func(i));
   }
   return 0;
}
1func(3) : 6
2func(2) : 2
3func(1) : 1
4func(0) : 0
정답 및 해설

세 번째 줄에 출력되는 것은 func(1) : 1이다.

for 문(인쇄본에는 세미콜론이 빠져 있으나 i를 5부터 0까지 줄이는 의도)은 i가 홀수일 때만 출력한다. func는 num!을 구하는 재귀 함수이다.

  • 첫째 줄: i=5 → func(5) : 120
  • 둘째 줄: i=3 → func(3) : 6
  • 셋째 줄: i=1 → func(1) : 1

i가 짝수(4, 2, 0)일 때는 출력하지 않으므로 func(2)나 func(0)은 출력되지 않는다.

문제 19
서브넷 마스크(subnet mask)를 255.255.255.224로 하여 한 개의 C클래스 주소 영역을 동일한 크기의 8개 하위 네트워크로 나누었다. 분할된 네트워크에서 브로드캐스트를 위한 IP 주소의 오른쪽 8비트에 해당하는 값으로 옳은 것은?
10
264
3159
4207
정답 및 해설

브로드캐스트 주소의 오른쪽 8비트로 옳은 것은 159이다.

255.255.255.224는 마지막 옥텟 224 = 11100000이므로 서브넷 3비트, 호스트 5비트이다. 각 서브넷 크기는 252^{5} = 32이고, 브로드캐스트 주소는 각 서브넷의 마지막 주소이다.

서브넷: 0~31, 32~63, 64~95, 96~127, 128~159, 160~191, 192~223, 224~255 → 브로드캐스트 31, 63, 95, 127, 159, 191, 223, 255

  • 0·64 — 서브넷의 네트워크 주소(첫 주소)이다.
  • 207 — 서브넷 경계에 맞지 않는 일반 호스트 주소이다.
문제 20
연결리스트(linked list)의 ‘preNode’ 노드와 그 다음 노드 사이에 새로운 ‘newNode’ 노드를 삽입하기 위해 빈 칸 ㉠에 들어갈 명령문으로 옳은 것은?
1newNode->link = preNode;
2newNode->link = preNode->link;
3newNode->link->link = preNode;
4newNode = preNode->link;
정답 및 해설

㉠에 들어갈 명령문은 newNode->link = preNode->link;이다.

삽입은 새 노드가 기존 다음 노드를 먼저 가리키게 한 뒤, preNode가 새 노드를 가리키도록 바꾸어야 한다. 순서를 바꾸면 기존 다음 노드의 주소를 잃어버린다.

  • newNode->link = preNode; — 새 노드가 앞 노드를 가리켜 순환이 생긴다.
  • newNode->link->link = preNode; — 아직 초기화되지 않은 link를 따라가므로 잘못이다.
  • newNode = preNode->link; — 새로 할당한 노드 주소를 덮어써 삽입이 되지 않는다.
9급 국가직 컴퓨터일반 기출문제모두CBT · moducbt.com
15년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
시스템 소프트웨어에 포함되지 않는 것은?
1스프레드시트(spreadsheet)
2로더(loader)
3링커(linker)
4운영체제(operating system)
정답 및 해설

시스템 소프트웨어에 포함되지 않는 것은 스프레드시트이다.

스프레드시트는 표 계산이라는 사용자 업무를 위한 응용 소프트웨어이다. 시스템 소프트웨어는 컴퓨터를 운영·관리하고 프로그램 실행을 지원한다.

  • 로더 — 실행 프로그램을 주기억장치에 적재하는 시스템 소프트웨어이다.
  • 링커 — 목적 프로그램들을 연결하는 시스템 소프트웨어이다.
  • 운영체제 — 대표적인 시스템 소프트웨어이다.
문제 2
OSI 7계층 중 브리지(bridge)가 복수의 LAN을 결합하기 위해 동작하는 계층은?
1물리 계층
2데이터 링크 계층
3네트워크 계층
4전송 계층
정답 및 해설

브리지가 동작하는 계층은 데이터 링크 계층이다.

브리지는 프레임의 MAC 주소를 보고 중계·필터링하여 여러 LAN 세그먼트를 연결한다.

  • 물리 계층 — 신호를 증폭·재생하는 리피터·허브가 동작한다.
  • 네트워크 계층 — IP 주소로 경로를 정하는 라우터가 동작한다.
  • 전송 계층 — 종단 간 전송을 다루며 브리지와 무관하다.
문제 3
데이터베이스 설계 과정에서 목표 DBMS의 구현 데이터 모델로 표현된 데이터베이스 스키마가 도출되는 단계는?
1요구사항 분석 단계
2개념적 설계 단계
3논리적 설계 단계
4물리적 설계 단계
정답 및 해설

해당 단계는 논리적 설계 단계이다.

논리적 설계는 개념적 설계의 결과(E-R 다이어그램 등)를 목표 DBMS의 데이터 모델(예: 관계형 스키마)로 변환하는 단계이다.

  • 요구사항 분석 — 사용자 요구를 수집·명세한다.
  • 개념적 설계 — DBMS와 독립적인 개념 스키마(E-R 모델)를 만든다.
  • 물리적 설계 — 저장 구조·인덱스·접근 경로를 설계한다.
문제 4
객체지향 프로그래밍의 특징 중 상속 관계에서 상위 클래스에 정의된 메소드(method) 호출에 대해 각 하위 클래스가 가지고 있는 고유한 방법으로 응답할 수 있도록 유연성을 제공하는 것은?
1재사용성(reusability)
2추상화(abstraction)
3다형성(polymorphism)
4캡슐화(encapsulation)
정답 및 해설

설명하는 특징은 다형성(polymorphism)이다.

다형성은 같은 메소드 호출에 대해 객체(하위 클래스)마다 고유한 방식으로 응답하는 성질로, 주로 오버라이딩으로 구현된다.

  • 재사용성 — 기존 클래스를 다시 활용하는 성질이다.
  • 추상화 — 공통 특성만 뽑아 단순화하는 것이다.
  • 캡슐화 — 데이터와 메소드를 묶고 내부를 숨기는 것이다.
문제 5
다음은 캐시 기억장치를 사상(mapping) 방식 기준으로 분류한 것이다. 캐시 블록은 4개 이상이고 사상 방식을 제외한 모든 조건이 동일하다고 가정할 때, 평균적으로 캐시 적중률(hit ratio)이 높은 것에서 낮은 것 순으로 바르게 나열한 것은?

ㄱ. 직접 사상(direct-mapped)
ㄴ. 완전 연관(fully-associative)
ㄷ. 2-way 집합 연관(set-associative)

1ㄱ-ㄴ-ㄷ
2ㄴ-ㄷ-ㄱ
3ㄷ-ㄱ-ㄴ
4ㄱ-ㄷ-ㄴ
정답 및 해설

적중률이 높은 순서는 ㄴ-ㄷ-ㄱ이다.

블록이 들어갈 수 있는 위치가 많을수록 충돌로 인한 교체가 줄어 적중률이 높다.

  • 완전 연관 — 캐시의 어느 블록에나 들어갈 수 있어 적중률이 가장 높다.
  • 2-way 집합 연관 — 정해진 집합 안의 2곳 중 하나에 들어간다.
  • 직접 사상 — 정해진 한 곳에만 들어가 충돌이 가장 잦다.
문제 6
다음 논리회로의 부울식으로 옳은 것은?
1F = AC' + BC
2F(A, B, C) = Σm(0, 1, 2, 3, 6, 7)
3F = (AC')'
4F = (A' + B' + C)(A+ B' + C')
정답 및 해설

회로의 부울식은 F = (AC')'이다.

위쪽 NAND 게이트에는 A와 인버터를 거친 C'가, 아래쪽 AND 게이트에는 B와 C가 들어가며 두 출력이 OR된다.
F = (AC')' + BC = A' + C + BC

BC는 C에 흡수되므로 F = A' + C = (AC')'이다.

  • AC' + BC — 위쪽 게이트를 NAND가 아닌 AND로 본 식이다.
  • Σm(0, 1, 2, 3, 6, 7) — A' + B에 해당해 A=1, B=0, C=1(m5)을 빠뜨린다.
  • (A'+B'+C)(A+B'+C') — A=0, B=1, C=1에서 0이 되어 A' + C와 다르다.
문제 7
소프트웨어 개발 프로세스 모델 중 하나인 나선형 모델(spiral model)에 대한 설명으로 옳지 않은 것은?
1폭포수(waterfall) 모델과 원형(prototype) 모델의 장점을 결합한 모델이다.
2점증적으로 개발을 진행하여 소프트웨어 품질을 지속적으로 개선할 수 있다.
3위험을 분석하고 최소화하기 위한 단계가 포함되어 있다.
4관리가 복잡하여 대규모 시스템의 소프트웨어 개발에는 적합하지 않다.
정답 및 해설

옳지 않은 것은 관리가 복잡하여 대규모 시스템 개발에 적합하지 않다는 설명이다.

나선형 모델은 반복마다 위험 분석을 수행하므로 위험 요소가 많은 대규모 시스템 개발에 적합하다. 관리가 복잡한 것은 단점이지만, 그 때문에 대규모에 부적합한 것은 아니다.

  • 폭포수 모델과 원형 모델의 장점을 결합했다 — 옳다.
  • 점증적으로 개발하며 품질을 지속적으로 개선한다 — 옳다.
  • 위험 분석·최소화 단계가 포함되어 있다 — 옳다.
문제 8
다음 표는 단일 CPU에 진입한 프로세스의 도착 시간과 처리하는 데 필요한 실행 시간을 나타낸 것이다. 프로세스 간 문맥 교환에 따른 오버헤드는 무시한다고 할 때, SRT(Shortest Remaining Time) 스케줄링 알고리즘을 사용한 경우 네 프로세스의 평균 반환시간(turnaround time)은?
프로세스도착 시간실행 시간
P108
P224
P341
P464
14.25
27
38.75
410
정답 및 해설

평균 반환시간은 7이다.

SRT는 새 프로세스가 도착할 때마다 남은 실행 시간이 가장 짧은 프로세스에 CPU를 준다(선점형).

  • 0~2: P1 실행(남은 6) → P2(4) 도착, P2로 교체
  • 2~4: P2 실행(남은 2) → P3(1) 도착, P3로 교체
  • 4~5: P3 완료
  • 5~7: P2 완료(6에 도착한 P4는 4라 P2의 남은 1보다 길다)
  • 7~11: P4 완료, 11~17: P1 완료

반환시간 = 종료 − 도착: P1 17, P2 5, P3 1, P4 5
평균 = 28 ÷ 4 = 7

문제 9
이더넷(Ethernet)의 매체 접근 제어(MAC) 방식인 CSMA/CD에 대한 설명으로 옳지 않은 것은?
1CSMA/CD 방식은 CSMA 방식에 충돌 검출 기법을 추가한 것으로 IEEE 802.11b의 MAC 방식으로 사용된다.
2충돌 검출을 위해 전송 프레임의 길이를 일정 크기 이상으로 유지해야 한다.
3전송 도중 충돌이 발생하면 임의의 시간 동안 대기하기 때문에 지연시간을 예측하기 어렵다.
4여러 스테이션으로부터의 전송 요구량이 증가하면 회선의 유효 전송률은 단일 스테이션에서 전송할 때 얻을 수 있는 유효 전송률보다 낮아지게 된다.
정답 및 해설

옳지 않은 것은 CSMA/CD가 IEEE 802.11b의 MAC 방식으로 사용된다는 설명이다.

CSMA/CD는 유선 이더넷(IEEE 802.3)의 방식이다. 무선 LAN(IEEE 802.11 계열)은 충돌 감지가 어려워 CSMA/CA를 사용한다.

  • 충돌 검출을 위해 프레임 길이를 일정 크기 이상으로 유지한다 — 옳다(최소 프레임 길이).
  • 충돌 시 임의 시간 대기(백오프)로 지연을 예측하기 어렵다 — 옳다.
  • 전송 요구가 늘면 충돌이 늘어 유효 전송률이 낮아진다 — 옳다.
문제 10
다음은 C언어로 내림차순 버블정렬 알고리즘을 구현한 함수이다. ㉠에 들어갈 if문의 조건으로 올바른 것은? (단, size는 1차원 배열인 value의 크기이다)
void BubbleSorting(int *value, int size) {
   int x, y, temp;
   for(x = 0 x < size x++) {
      for(y = 0 y < size - x - 1 y++) {
         if( ㉠ ) {
            temp = value[y];
            value[y] = value[y+1];
            value[y+1] = temp
         }
      }
   }
}
1value[x] > value[y+1]
2value[x] < value[y+1]
3value[y] > value[y+1]
4value[y] < value[y+1]
정답 및 해설

㉠에 들어갈 조건은 value[y] < value[y+1]이다.

버블 정렬은 인접한 value[y]와 value[y+1]을 비교해 순서가 틀리면 교환한다. 내림차순은 큰 값이 앞에 와야 하므로 앞의 값이 뒤의 값보다 작을 때 교환한다.

  • value[y] > value[y+1] — 앞이 클 때 교환하므로 오름차순 정렬이 된다.
  • value[x] > value[y+1] — 교환 대상인 인접 원소(value[y])가 아닌 value[x]를 비교해 버블 정렬이 되지 않는다.
  • value[x] < value[y+1] — 같은 이유로 인접 원소 비교가 아니다.
문제 11
객체지향 기법을 지원하지 않는 프로그래밍 언어는?
1LISP
2Java
3Python
4C#
정답 및 해설

객체지향 기법을 지원하지 않는 언어로 제시된 것은 LISP이다.

LISP는 리스트 처리를 위해 만들어진 대표적인 함수형 언어로, 객체지향 언어로 분류되지 않는다.

  • Java — 클래스 기반의 대표적인 객체지향 언어이다.
  • Python — 클래스·상속 등 객체지향을 지원하는 다중 패러다임 언어이다.
  • C# — 마이크로소프트의 객체지향 언어이다.
문제 12
관계형 모델(relational model)의 릴레이션(relation)에 대한 설명으로 옳지 않은 것은?
1릴레이션의 한 행(row)을 투플(tuple)이라고 한다.
2속성(attribute)은 릴레이션의 열(column)을 의미한다.
3한 릴레이션에 존재하는 모든 투플들은 상이해야 한다.
4한 릴레이션의 속성들은 고정된 순서를 갖는다.
정답 및 해설

옳지 않은 것은 한 릴레이션의 속성들은 고정된 순서를 갖는다는 설명이다.

릴레이션에서 속성(열)과 투플(행)에는 순서가 없다. 속성은 순서가 아니라 이름으로 구별한다.

  • 한 행을 투플이라 한다 — 옳다.
  • 속성은 릴레이션의 열이다 — 옳다.
  • 모든 투플은 서로 달라야 한다 — 옳다(중복 투플 불허).
문제 13
컴퓨터 버스에 대한 설명으로 옳지 않은 것은?
1주소 정보를 전달하는 주소 버스(address bus), 데이터 전송을 위한 데이터 버스(data bus), 그리고 명령어 전달을 위한 명령어 버스(instruction bus)로 구성된다.
23-상태(3-state) 버퍼를 이용하면 데이터를 송신하고 있지 않는 장치의 출력이 버스에 연결된 다른 장치와 간섭하지 않도록 분리시킬 수 있다.
3특정 장치를 이용하면 버스를 통해서 입출력 장치와 주기억 장치 간 데이터가 CPU를 거치지 않고 전송될 수 있다.
4다양한 장치를 연결하기 위한 별도의 버스가 추가적으로 존재할 수 있다.
정답 및 해설

옳지 않은 것은 버스가 주소 버스, 데이터 버스, 명령어 버스로 구성된다는 설명이다.

시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성된다. 명령어도 메모리에서 읽어 올 때는 데이터 버스로 전달된다.

  • 3-상태 버퍼로 송신하지 않는 장치를 버스에서 분리할 수 있다 — 옳다.
  • DMA 제어기를 이용하면 CPU를 거치지 않고 전송할 수 있다 — 옳다.
  • 다양한 장치 연결을 위한 별도 버스(입출력 버스 등)가 있을 수 있다 — 옳다.
문제 14
다음 이진 트리(binary tree)의 노드들을 후위 순회(post-order traversal)한 경로를 나타낸 것은?
1F→H→I→D→E→G→B→C→A
2D→F→E→B→H→I→G→C→A
3D→B→F→E→A→C→H→G→I
4I→H→G→C→F→E→D→B→A
정답 및 해설

후위 순회 경로는 D→F→E→B→H→I→G→C→A이다.

후위 순회는 왼쪽 서브트리 → 오른쪽 서브트리 → 루트 순으로 방문한다.

  • A의 왼쪽 서브트리(B): D → (E의 서브트리: F → E) → B
  • A의 오른쪽 서브트리(C): (G의 서브트리: H → I → G) → C
  • 마지막으로 루트 A
  • F→H→I→D→E→G→B→C→A — 왼쪽 서브트리를 끝내기 전에 오른쪽의 H, I를 방문해 후위 순회가 아니다.
  • D→B→F→E→A→C→H→G→I — 중위 순회 결과이다.
  • I→H→G→C→F→E→D→B→A — 전위 순회(A→B→D→E→F→C→G→H→I)를 거꾸로 적은 것이다.
문제 15
프로토콜에 대한 설명으로 옳지 않은 것은?
1ARP는 데이터 링크 계층의 프로토콜로 MAC 주소에 대해 해당 IP 주소를 반환해 준다.
2UDP를 사용하면 일부 데이터의 손실이 발생할 수 있지만 TCP에 비해 전송 오버헤드가 적다.
3MIME는 텍스트, 이미지, 오디오, 비디오 등의 멀티미디어 전자우편을 위한 규약이다.
4DHCP는 한정된 개수의 IP 주소를 여러 사용자가 공유할 수 있도록 동적으로 가용한 주소를 호스트에 할당해준다.
정답 및 해설

옳지 않은 것은 ARP가 MAC 주소에 대해 해당 IP 주소를 반환한다는 설명이다.

ARP는 반대로 IP 주소로 MAC 주소를 알아내는 프로토콜이다. MAC 주소로 IP 주소를 얻는 것은 RARP이다.

  • UDP는 손실 가능성이 있지만 TCP보다 오버헤드가 적다 — 옳다.
  • MIME는 멀티미디어 전자우편 규약이다 — 옳다.
  • DHCP는 한정된 IP 주소를 동적으로 할당해 공유하게 한다 — 옳다.
문제 16
비결정적 유한 오토마타(non-deterministic finite automata)에 대한 설명으로 옳지 않은 것은?
1한 상태에서 전이 시 다음 상태를 선택할 수 있다.
2입력 심볼을 읽지 않고도 상태 전이를 할 수 있다.
3어떤 비결정적 유한 오토마타라도 같은 언어를 인식하는 결정적 유한 오토마타(deterministic finite automata)로 변환이 가능하다.
4모든 문맥 자유 언어(context-free language)를 인식한다.
정답 및 해설

옳지 않은 것은 모든 문맥 자유 언어를 인식한다는 설명이다.

비결정적 유한 오토마타는 결정적 유한 오토마타와 인식 능력이 같아 정규 언어만 인식한다. 문맥 자유 언어를 인식하려면 스택을 가진 푸시다운 오토마타가 필요하다.

  • 한 상태에서 다음 상태를 여러 개 중 선택할 수 있다 — 옳다.
  • 입력 없이 ε-전이를 할 수 있다 — 옳다.
  • 같은 언어를 인식하는 DFA로 변환할 수 있다 — 옳다(부분집합 구성법).
문제 17
클라우드 컴퓨팅 서비스 모델과 이에 대한 설명이 바르게 짝지어진 것은? (순서대로 IaaS, PaaS, SaaS)

ㄱ. 응용소프트웨어 개발에 필요한 개발 요소들과 실행 환경을 제공하는 서비스 모델로서, 사용자는 원하는 응용 소프트웨어를 개발할 수 있으나 운영체제나 하드웨어에 대한 제어는 서비스 제공자에 의해 제한된다.
ㄴ. 응용소프트웨어 및 관련 데이터는 클라우드에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 응용소프트웨어를 사용할 수 있다.
ㄷ. 사용자 필요에 따라 가상화된 서버, 스토리지, 네트워크 등의 인프라 자원을 제공한다.

1ㄷ, ㄴ, ㄱ
2ㄴ, ㄱ, ㄷ
3ㄷ, ㄱ, ㄴ
4ㄱ, ㄷ, ㄴ
정답 및 해설

IaaS, PaaS, SaaS 순으로 ㄷ, ㄱ, ㄴ이다.

세 모델은 제공하는 범위가 인프라 → 플랫폼 → 소프트웨어로 넓어진다.

  • IaaS — 가상화된 서버·스토리지·네트워크 인프라를 제공하므로 ㄷ이다.
  • PaaS — 개발 요소와 실행 환경(플랫폼)을 제공하고 OS·하드웨어 제어는 제한되므로 ㄱ이다.
  • SaaS — 응용 소프트웨어를 웹 브라우저로 바로 쓰게 하므로 ㄴ이다.
문제 18
다음 C 언어로 작성된 프로그램의 실행 결과에서 세 번째 줄에 출력되는 것은?
#include <stdio.h>
int func(int num) {
   if(num == 1)
      return 1;
   else
      return num * func(num - 1);
}
int main() {
   int i;
   for(i = 5 i >= 0 i--) {
      if(i % 2 == 1)
         printf("func(%d) : %d\n", i, func(i));
   }
   return 0;
}
1func(3) : 6
2func(2) : 2
3func(1) : 1
4func(0) : 0
정답 및 해설

세 번째 줄에 출력되는 것은 func(1) : 1이다.

for 문(인쇄본에는 세미콜론이 빠져 있으나 i를 5부터 0까지 줄이는 의도)은 i가 홀수일 때만 출력한다. func는 num!을 구하는 재귀 함수이다.

  • 첫째 줄: i=5 → func(5) : 120
  • 둘째 줄: i=3 → func(3) : 6
  • 셋째 줄: i=1 → func(1) : 1

i가 짝수(4, 2, 0)일 때는 출력하지 않으므로 func(2)나 func(0)은 출력되지 않는다.

문제 19
서브넷 마스크(subnet mask)를 255.255.255.224로 하여 한 개의 C클래스 주소 영역을 동일한 크기의 8개 하위 네트워크로 나누었다. 분할된 네트워크에서 브로드캐스트를 위한 IP 주소의 오른쪽 8비트에 해당하는 값으로 옳은 것은?
10
264
3159
4207
정답 및 해설

브로드캐스트 주소의 오른쪽 8비트로 옳은 것은 159이다.

255.255.255.224는 마지막 옥텟 224 = 11100000이므로 서브넷 3비트, 호스트 5비트이다. 각 서브넷 크기는 252^{5} = 32이고, 브로드캐스트 주소는 각 서브넷의 마지막 주소이다.

서브넷: 0~31, 32~63, 64~95, 96~127, 128~159, 160~191, 192~223, 224~255 → 브로드캐스트 31, 63, 95, 127, 159, 191, 223, 255

  • 0·64 — 서브넷의 네트워크 주소(첫 주소)이다.
  • 207 — 서브넷 경계에 맞지 않는 일반 호스트 주소이다.
문제 20
연결리스트(linked list)의 ‘preNode’ 노드와 그 다음 노드 사이에 새로운 ‘newNode’ 노드를 삽입하기 위해 빈 칸 ㉠에 들어갈 명령문으로 옳은 것은?
1newNode->link = preNode;
2newNode->link = preNode->link;
3newNode->link->link = preNode;
4newNode = preNode->link;
정답 및 해설

㉠에 들어갈 명령문은 newNode->link = preNode->link;이다.

삽입은 새 노드가 기존 다음 노드를 먼저 가리키게 한 뒤, preNode가 새 노드를 가리키도록 바꾸어야 한다. 순서를 바꾸면 기존 다음 노드의 주소를 잃어버린다.

  • newNode->link = preNode; — 새 노드가 앞 노드를 가리켜 순환이 생긴다.
  • newNode->link->link = preNode; — 아직 초기화되지 않은 link를 따라가므로 잘못이다.
  • newNode = preNode->link; — 새로 할당한 노드 주소를 덮어써 삽입이 되지 않는다.