시스템 소프트웨어에 포함되지 않는 것은 스프레드시트이다.
스프레드시트는 표 계산이라는 사용자 업무를 위한 응용 소프트웨어이다. 시스템 소프트웨어는 컴퓨터를 운영·관리하고 프로그램 실행을 지원한다.
- 로더 — 실행 프로그램을 주기억장치에 적재하는 시스템 소프트웨어이다.
- 링커 — 목적 프로그램들을 연결하는 시스템 소프트웨어이다.
- 운영체제 — 대표적인 시스템 소프트웨어이다.
브리지가 동작하는 계층은 데이터 링크 계층이다.
브리지는 프레임의 MAC 주소를 보고 중계·필터링하여 여러 LAN 세그먼트를 연결한다.
- 물리 계층 — 신호를 증폭·재생하는 리피터·허브가 동작한다.
- 네트워크 계층 — IP 주소로 경로를 정하는 라우터가 동작한다.
- 전송 계층 — 종단 간 전송을 다루며 브리지와 무관하다.
해당 단계는 논리적 설계 단계이다.
논리적 설계는 개념적 설계의 결과(E-R 다이어그램 등)를 목표 DBMS의 데이터 모델(예: 관계형 스키마)로 변환하는 단계이다.
- 요구사항 분석 — 사용자 요구를 수집·명세한다.
- 개념적 설계 — DBMS와 독립적인 개념 스키마(E-R 모델)를 만든다.
- 물리적 설계 — 저장 구조·인덱스·접근 경로를 설계한다.
설명하는 특징은 다형성(polymorphism)이다.
다형성은 같은 메소드 호출에 대해 객체(하위 클래스)마다 고유한 방식으로 응답하는 성질로, 주로 오버라이딩으로 구현된다.
- 재사용성 — 기존 클래스를 다시 활용하는 성질이다.
- 추상화 — 공통 특성만 뽑아 단순화하는 것이다.
- 캡슐화 — 데이터와 메소드를 묶고 내부를 숨기는 것이다.
ㄱ. 직접 사상(direct-mapped)
ㄴ. 완전 연관(fully-associative)
ㄷ. 2-way 집합 연관(set-associative)
적중률이 높은 순서는 ㄴ-ㄷ-ㄱ이다.
블록이 들어갈 수 있는 위치가 많을수록 충돌로 인한 교체가 줄어 적중률이 높다.
- 완전 연관 — 캐시의 어느 블록에나 들어갈 수 있어 적중률이 가장 높다.
- 2-way 집합 연관 — 정해진 집합 안의 2곳 중 하나에 들어간다.
- 직접 사상 — 정해진 한 곳에만 들어가 충돌이 가장 잦다.

회로의 부울식은 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와 다르다.
옳지 않은 것은 관리가 복잡하여 대규모 시스템 개발에 적합하지 않다는 설명이다.
나선형 모델은 반복마다 위험 분석을 수행하므로 위험 요소가 많은 대규모 시스템 개발에 적합하다. 관리가 복잡한 것은 단점이지만, 그 때문에 대규모에 부적합한 것은 아니다.
- 폭포수 모델과 원형 모델의 장점을 결합했다 — 옳다.
- 점증적으로 개발하며 품질을 지속적으로 개선한다 — 옳다.
- 위험 분석·최소화 단계가 포함되어 있다 — 옳다.
| 프로세스 | 도착 시간 | 실행 시간 |
|---|---|---|
| P1 | 0 | 8 |
| P2 | 2 | 4 |
| P3 | 4 | 1 |
| P4 | 6 | 4 |
평균 반환시간은 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
옳지 않은 것은 CSMA/CD가 IEEE 802.11b의 MAC 방식으로 사용된다는 설명이다.
CSMA/CD는 유선 이더넷(IEEE 802.3)의 방식이다. 무선 LAN(IEEE 802.11 계열)은 충돌 감지가 어려워 CSMA/CA를 사용한다.
- 충돌 검출을 위해 프레임 길이를 일정 크기 이상으로 유지한다 — 옳다(최소 프레임 길이).
- 충돌 시 임의 시간 대기(백오프)로 지연을 예측하기 어렵다 — 옳다.
- 전송 요구가 늘면 충돌이 늘어 유효 전송률이 낮아진다 — 옳다.
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
}
}
}
}㉠에 들어갈 조건은 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] — 같은 이유로 인접 원소 비교가 아니다.
객체지향 기법을 지원하지 않는 언어로 제시된 것은 LISP이다.
LISP는 리스트 처리를 위해 만들어진 대표적인 함수형 언어로, 객체지향 언어로 분류되지 않는다.
- Java — 클래스 기반의 대표적인 객체지향 언어이다.
- Python — 클래스·상속 등 객체지향을 지원하는 다중 패러다임 언어이다.
- C# — 마이크로소프트의 객체지향 언어이다.
옳지 않은 것은 한 릴레이션의 속성들은 고정된 순서를 갖는다는 설명이다.
릴레이션에서 속성(열)과 투플(행)에는 순서가 없다. 속성은 순서가 아니라 이름으로 구별한다.
- 한 행을 투플이라 한다 — 옳다.
- 속성은 릴레이션의 열이다 — 옳다.
- 모든 투플은 서로 달라야 한다 — 옳다(중복 투플 불허).
옳지 않은 것은 버스가 주소 버스, 데이터 버스, 명령어 버스로 구성된다는 설명이다.
시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성된다. 명령어도 메모리에서 읽어 올 때는 데이터 버스로 전달된다.
- 3-상태 버퍼로 송신하지 않는 장치를 버스에서 분리할 수 있다 — 옳다.
- DMA 제어기를 이용하면 CPU를 거치지 않고 전송할 수 있다 — 옳다.
- 다양한 장치 연결을 위한 별도 버스(입출력 버스 등)가 있을 수 있다 — 옳다.

후위 순회 경로는 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)를 거꾸로 적은 것이다.
옳지 않은 것은 ARP가 MAC 주소에 대해 해당 IP 주소를 반환한다는 설명이다.
ARP는 반대로 IP 주소로 MAC 주소를 알아내는 프로토콜이다. MAC 주소로 IP 주소를 얻는 것은 RARP이다.
- UDP는 손실 가능성이 있지만 TCP보다 오버헤드가 적다 — 옳다.
- MIME는 멀티미디어 전자우편 규약이다 — 옳다.
- DHCP는 한정된 IP 주소를 동적으로 할당해 공유하게 한다 — 옳다.
옳지 않은 것은 모든 문맥 자유 언어를 인식한다는 설명이다.
비결정적 유한 오토마타는 결정적 유한 오토마타와 인식 능력이 같아 정규 언어만 인식한다. 문맥 자유 언어를 인식하려면 스택을 가진 푸시다운 오토마타가 필요하다.
- 한 상태에서 다음 상태를 여러 개 중 선택할 수 있다 — 옳다.
- 입력 없이 ε-전이를 할 수 있다 — 옳다.
- 같은 언어를 인식하는 DFA로 변환할 수 있다 — 옳다(부분집합 구성법).
ㄱ. 응용소프트웨어 개발에 필요한 개발 요소들과 실행 환경을 제공하는 서비스 모델로서, 사용자는 원하는 응용 소프트웨어를 개발할 수 있으나 운영체제나 하드웨어에 대한 제어는 서비스 제공자에 의해 제한된다.
ㄴ. 응용소프트웨어 및 관련 데이터는 클라우드에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 응용소프트웨어를 사용할 수 있다.
ㄷ. 사용자 필요에 따라 가상화된 서버, 스토리지, 네트워크 등의 인프라 자원을 제공한다.
IaaS, PaaS, SaaS 순으로 ㄷ, ㄱ, ㄴ이다.
세 모델은 제공하는 범위가 인프라 → 플랫폼 → 소프트웨어로 넓어진다.
- IaaS — 가상화된 서버·스토리지·네트워크 인프라를 제공하므로 ㄷ이다.
- PaaS — 개발 요소와 실행 환경(플랫폼)을 제공하고 OS·하드웨어 제어는 제한되므로 ㄱ이다.
- SaaS — 응용 소프트웨어를 웹 브라우저로 바로 쓰게 하므로 ㄴ이다.
#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;
}세 번째 줄에 출력되는 것은 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)은 출력되지 않는다.
브로드캐스트 주소의 오른쪽 8비트로 옳은 것은 159이다.
255.255.255.224는 마지막 옥텟 224 = 11100000이므로 서브넷 3비트, 호스트 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 — 서브넷 경계에 맞지 않는 일반 호스트 주소이다.

㉠에 들어갈 명령문은 newNode->link = preNode->link;이다.
삽입은 새 노드가 기존 다음 노드를 먼저 가리키게 한 뒤, preNode가 새 노드를 가리키도록 바꾸어야 한다. 순서를 바꾸면 기존 다음 노드의 주소를 잃어버린다.
- newNode->link = preNode; — 새 노드가 앞 노드를 가리켜 순환이 생긴다.
- newNode->link->link = preNode; — 아직 초기화되지 않은 link를 따라가므로 잘못이다.
- newNode = preNode->link; — 새로 할당한 노드 주소를 덮어써 삽입이 되지 않는다.