| <보 기> | |||
| ㄱ. 레지스터 ㄷ. 캐시메모리 | ㄴ. 주기억장치 ㄹ. 하드디스크 | ||
접근 속도가 빠른 순서는 레지스터 → 캐시메모리 → 주기억장치 → 하드디스크이므로 ㄱ, ㄷ, ㄴ, ㄹ이 맞다.
기억장치 계층에서는 CPU에 가까울수록 빠르고 용량은 작으며 단가는 높다. 레지스터는 CPU 내부에 있고, 캐시는 CPU와 주기억장치의 속도 차이를 줄이며, 하드디스크는 기계적 동작이 있는 보조기억장치라 가장 느리다.
- ㄱ, ㄴ, ㄷ, ㄹ: 주기억장치를 캐시메모리보다 앞에 두어 틀리다. 캐시가 주기억장치보다 빠르다.
- ㄱ, ㄷ, ㄹ, ㄴ: 하드디스크를 주기억장치보다 앞에 두어 틀리다.
- ㄷ, ㄱ, ㄴ, ㄹ: 캐시메모리를 레지스터보다 앞에 두어 틀리다. CPU 내부의 레지스터가 가장 빠르다.
- ㄷ, ㄱ, ㄹ, ㄴ: 캐시와 레지스터의 순서, 주기억장치와 하드디스크의 순서가 모두 뒤바뀌었다.
설명에 해당하는 것은 개념 스키마이다.
개념 스키마는 조직 전체 관점에서 데이터베이스의 논리적 구조를 기술한다. 개체 간 관계와 제약 조건은 물론 접근 권한, 보안, 무결성 규칙도 여기에 정의한다.
- 외부 스키마: 개별 사용자나 응용 프로그램이 보는 일부분의 논리 구조이다.
- 서브 스키마: 외부 스키마의 다른 이름으로, 전체가 아닌 사용자별 관점을 나타낸다.
- 물리 스키마: 내부 스키마와 같은 뜻으로 쓰이며, 저장 구조를 다룬다.
- 내부 스키마: 저장 레코드 형식, 인덱스, 데이터의 물리적 배치 등 저장 방법을 정의한다.
명령과 설명이 맞는 것은 grep이다.
grep은 파일이나 입력에서 지정한 패턴과 일치하는 행을 찾아 출력한다.
- umount: 연결된 파일시스템을 디렉터리 트리에서 분리한다. 연결은 mount가 한다.
- ln: 파일의 링크를 만든다. 복사는 cp가 한다.
- pwd: 현재 작업 디렉터리의 경로를 출력한다. 비밀번호 변경은 passwd가 한다.
- more: 파일 내용을 화면 단위로 나누어 보여 준다. 추가 속성 정보를 출력하는 명령이 아니다.
게이트웨이는 서로 다른 통신 프로토콜을 쓰는 네트워크 사이를 연결해 데이터를 교환하게 하는 장치이다.
게이트웨이는 프로토콜이 다른 망 사이에서 프로토콜 변환을 수행해 통신을 중계한다.
- 디지털 신호와 아날로그 신호 사이의 변환은 모뎀의 기능이다.
- 신호를 증폭해 전송 거리를 늘리는 것은 리피터의 기능이다.
- LAN을 연결하고 데이터링크 계층에서 동작하는 것은 브리지의 특징이다.
- 도메인 이름을 IP 주소로 변환하는 것은 DNS의 역할이다.
중위순회 = [CBDAFGE]
주어진 순회 결과로 트리를 복원하면 후위순회 결과는 [CDBGFEA]이다.
전위순회의 첫 값이 루트이고, 중위순회에서 그 루트의 왼쪽과 오른쪽이 각각 왼쪽·오른쪽 서브트리이다.
루트 A: 중위 [CBD]가 왼쪽, [FGE]가 오른쪽 서브트리이다.
왼쪽 서브트리: 전위 [BCD]이므로 루트는 B, 왼쪽 자식 C, 오른쪽 자식 D이다.
오른쪽 서브트리: 전위 [EFG]이므로 루트는 E이고, 중위 [FG]가 E의 왼쪽이다. F가 E의 왼쪽 자식, G가 F의 오른쪽 자식이다.
후위순회는 왼쪽 → 오른쪽 → 루트 순이다.
왼쪽 서브트리 CDB → 오른쪽 서브트리 GFE → 루트 A
이어 붙이면 [CDBGFEA]가 된다.
CSS는 HTML 문서의 내용을 웹 브라우저에 어떻게 표현할지 기술하는 스타일 시트 언어이다.
HTML이 문서의 구조를 담당한다면 CSS는 글꼴, 색상, 배치 같은 표현을 담당한다.
- 웹페이지의 동작을 정의하는 스크립트 언어는 JavaScript이다.
- CSS는 별도의 외부 파일로 분리해 link 요소로 연결할 수 있으므로 반드시 문서 내에 둘 필요가 없다.
- CSS 주석은 /* 와 */ 사이에 작성한다. 제시된 표기는 HTML 주석이다.
- 마우스 포인터를 올렸을 때 적용되는 의사 클래스는 :hover이다. :focus는 요소가 입력 포커스를 받았을 때 적용된다.
using namespace std;
int main()
{
int x;
for (x = 1; x <= 7; x++) {
if (x == 5)
continue;
else if (x == 6)
break;
cout << x;
}
return 0;
}
x가 1부터 4까지일 때만 출력되므로 실행결과는 1234이다.
x = 1, 2, 3, 4: 두 조건이 모두 거짓이라 cout이 실행되어 차례로 출력된다.
x = 5: continue로 출력을 건너뛰고 다음 반복으로 넘어간다.
x = 6: break로 반복문을 빠져나가므로 7까지 가지 않는다.
- 123: x가 4일 때도 출력되므로 틀리다.
- 12345: x가 5일 때는 continue로 출력되지 않는다.
- 12346: x가 6일 때는 출력 전에 break가 실행된다.
- 12347: x가 6일 때 반복이 끝나 7까지 도달하지 않는다.
옳지 않은 것은 군집과 분류를 모두 비지도 학습으로 묶은 설명이다.
군집은 정답 없이 데이터를 묶는 비지도 학습이지만, 분류는 정답 레이블이 있는 데이터로 학습하는 지도 학습이다.
- 지도 학습이 입력과 출력 쌍으로 그 매핑을 학습한다는 설명은 옳다.
- 회귀가 특성으로 목표 수치를 예측하는 지도 학습이라는 설명은 옳다.
- 강화 학습이 행동 결과에 주어지는 보상으로 학습한다는 설명은 옳다.
- 비지도 학습이 출력 없이 입력의 규칙성을 찾는다는 설명은 옳다.
옳은 설명은 RAID 3에 대한 것으로, 데이터를 여러 디스크에 스트라이핑하고 패리티는 하나의 드라이브에 저장한다.
RAID 3은 전용 패리티 디스크를 두는 방식이다. 패리티를 한 드라이브에 모아 둔다는 점이 패리티를 분산하는 RAID 5와 다르다.
- RAID 0: 미러링이 아니라 중복 없는 스트라이핑 구성이다.
- RAID 1: 스트라이핑이 아니라 같은 데이터를 복제하는 미러링 구성이다.
- RAID 5: 비트 단위가 아니라 블록 단위로 스트라이핑하고 패리티를 여러 디스크에 분산한다.
- RAID 6: 패리티를 포함하지 않는 것이 아니라 이중 패리티를 분산 저장한다.
옳지 않은 것은 튜플이 원자값으로 분해가 불가능하다는 설명이다.
더 이상 분해할 수 없는 원자값이어야 하는 것은 튜플이 아니라 속성값이다. 튜플은 여러 속성값의 모임이다.
- 튜플들이 모두 상이하다는 설명은 옳다. 릴레이션은 튜플의 집합이므로 중복을 허용하지 않는다.
- 속성들 간의 순서가 의미 없다는 설명은 옳다.
- 튜플 사이에 순서가 없다는 설명은 옳다.
- 릴레이션이 속성들을 가진 테이블이라는 설명은 옳다.
설명에 해당하는 레지스터는 Memory Buffer Register(MBR)이다.
MBR은 기억장치에서 읽거나 기억장치에 쓸 데이터를 잠시 보관하는 레지스터로, CPU와 기억장치 사이의 데이터는 이곳을 거친다.
- Status Register: 연산 결과의 상태를 나타내는 플래그를 보관한다.
- Program Status Word Register: 프로그램 실행 상태 정보를 보관한다.
- Memory Address Register: 데이터가 아니라 접근할 기억장치의 주소를 보관한다.
- Index Register: 주소 지정 시 유효 주소 계산에 쓰이는 값을 보관한다.
| <보 기> | ||
| ㄱ.하나의 트랜잭션은 부분적으로 반영될 수 있다. ㄴ.완료된 트랜잭션의 결과는 시스템의 장애 등이 발생해도 손실되지 않는다. ㄷ.트랜잭션 실행이 완료되면 언제나 일관성 있는 데이터베이스 상태로 유지되어야 한다. ㄹ.트랜잭션이 갱신 중인 데이터에 다른 트랜잭션이 접근할 수 있다. | ||
ACID 특성에 해당하는 지문은 ㄴ, ㄷ뿐이다.
ACID는 원자성, 일관성, 격리성, 지속성을 뜻하며, 각 지문을 이 특성과 대조하면 맞는 지문은 둘로 정해진다.
- ㄱ(X): 트랜잭션은 전부 반영되거나 전혀 반영되지 않아야 한다는 원자성에 어긋난다.
- ㄴ(O): 완료된 결과가 장애에도 손실되지 않는 것은 지속성이다.
- ㄷ(O): 실행 완료 후 일관된 상태를 유지하는 것은 일관성이다.
- ㄹ(X): 갱신 중인 데이터에 다른 트랜잭션이 접근할 수 없어야 한다는 격리성에 어긋난다.
| <보 기> | ||
| ㄱ. RR(Round Robin) ㄴ. SJF(Shortest Job First) ㄷ. SRT(Shortest Remaining Time) ㄹ. HRN(Highest Response ratio Next) ㅁ. MFQ(Multilevel Feedback Queue) ㅂ. MLQ(MultiLevel Queue) | ||
선점 스케줄링 비선점 스케줄링
선점 스케줄링은 ㄱ, ㄷ, ㅁ, ㅂ이고 비선점 스케줄링은 ㄴ, ㄹ이다.
실행 중인 프로세스의 CPU를 운영체제가 빼앗을 수 있으면 선점, 끝날 때까지 빼앗지 못하면 비선점이다.
- ㄱ RR: 시간 할당량이 끝나면 CPU를 내놓는 선점 방식이다.
- ㄴ SJF: 실행 시간이 짧은 작업을 먼저 고르되 시작하면 끝까지 실행하는 비선점 방식이다.
- ㄷ SRT: 남은 시간이 더 짧은 작업이 오면 CPU를 넘겨주는 SJF의 선점 버전이다.
- ㄹ HRN: 대기 시간을 반영한 응답비로 고르는 비선점 방식이다.
- ㅁ MFQ: 큐 사이를 이동하며 시간 할당량을 쓰는 선점 방식이다.
- ㅂ MLQ: 상위 우선순위 큐가 하위 큐의 실행을 선점하는 방식이다.
옳지 않은 것은 IP가 출발지와 목적지의 포트번호를 지정한다는 설명이다.
포트번호는 전송 계층인 TCP와 UDP의 헤더에 담긴다. 네트워크 계층의 IP가 다루는 것은 IP 주소이며, 패킷의 분해와 조립 자체는 IP의 기능이 맞다.
- TCP가 순서제어, 에러제어, 흐름제어, 다중화를 제공한다는 설명은 옳다.
- UDP가 전송 계층에 속하면서 전송확인과 신뢰성을 고려하지 않는다는 설명은 옳다.
- IP가 에러 복구 기능이 없어 신뢰도가 낮다는 설명은 옳다.
- UDP가 데이터그램 단위의 고속 전송에 쓰인다는 설명은 옳다.
옳은 것은 퀵 정렬과 합병 정렬이 분할정복 방법을 사용한다는 설명이다.
두 정렬 모두 문제를 작은 부분으로 나누어 각각 해결한다. 퀵 정렬은 피벗을 기준으로 나눠 제자리에서 정렬하고, 합병 정렬은 절반으로 나눈 뒤 병합한다.
- 선택 정렬의 시간 복잡도는 이다. 은 힙 정렬에만 해당한다.
- 삽입 정렬은 안정 정렬이지만 힙 정렬은 안정 정렬이 아니다.
- 퀵 정렬의 최악 성능은 이다.
- 선택 정렬과 버블 정렬은 원소 교환만으로 진행하므로 제자리 정렬이 가능하다.
괄호에 공통으로 들어갈 단어는 다형성이다.
하나의 연산이나 부프로그램이 여러 자료형을 처리하는 특성이 다형성이다. 특수 범주형의 대표는 오버로딩, 매개변수화의 대표는 제네릭이다.
- 추상화: 복잡한 대상에서 핵심만 뽑아 표현하는 것이다.
- 캡슐화: 데이터와 이를 다루는 연산을 하나로 묶는 것이다.
- 상속성: 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것이다.
- 정보 은닉: 내부 구현을 외부에서 접근하지 못하게 감추는 것이다.
int size, top;
int buf[];
public StackInt(int s) {
buf = new int[s];
size = s;
top = -1;
}
public void push(int x) {
㉠ ;
}
public int pop() {
㉡ ;
}
}
㉠ ㉡
㉠은 buf[++top] = x, ㉡은 return buf[top--]가 맞다.
top의 초깃값이 -1이므로 top은 마지막으로 넣은 원소의 위치를 가리킨다. push는 top을 먼저 올린 뒤 저장하고, pop은 값을 반환한 뒤 top을 내려야 한다.
- buf[++top] = x와 return buf[--top]: pop이 top을 먼저 내려 맨 위 원소가 아닌 그 아래 원소를 반환한다.
- buf[top] = x와 return buf[top]: top이 변하지 않고, 첫 push부터 인덱스 -1에 접근한다.
- buf[--top] = x와 return buf[top++]: top을 내리며 저장해 인덱스가 범위를 벗어난다.
- buf[top + 1] = x와 return buf[top – 1]: top이 갱신되지 않아 스택의 위치가 관리되지 않는다.
설명에 해당하는 계층은 표현 계층이다.
표현 계층은 교환되는 정보의 구문과 의미를 다루며, 데이터의 형식 변환, 압축, 암호화를 담당한다.
- 물리 계층: 비트를 전기적 신호로 전송한다.
- 데이터링크 계층: 인접 노드 간 프레임 전송과 오류 제어를 맡는다.
- 네트워크 계층: IP 주소를 바탕으로 패킷의 경로를 결정한다.
- 전송 계층: 종단 간 신뢰성 있는 데이터 전달을 맡는다.

Kruskal 알고리즘으로 구성한 최소 비용 신장 트리의 총 가중치 합은 71이다.
Kruskal 알고리즘은 간선을 가중치 오름차순으로 살피며 사이클을 만들지 않는 간선만 고른다. 정점이 8개이므로 간선 7개를 고르면 끝난다.
채택 순서: 3(3-4), 4(1-3), 8(2-3), 9(4-6), 13(0-1), 16(4-5), 18(6-7)
사이클이 생겨 제외: 12(2-6), 15(0-2), 17(1-5)
7개를 다 골랐으므로 가중치 20인 5-7은 살피지 않는다.
- 67은 최소 비용인 71보다 작아 어떤 신장 트리로도 나올 수 없다.
- 69도 71보다 작아 신장 트리의 합이 될 수 없다.
- 73은 정점 7을 18이 아닌 20(5-7)으로 연결할 때의 합으로 최소가 아니다.
- 75는 정점 7을 20(5-7)으로, 정점 0을 13이 아닌 15(0-2)로 연결할 때의 합으로 최소가 아니다.
옳지 않은 것은 나선형 모형이 소규모 시스템에 적합하다는 설명이다.
나선형 모형은 반복마다 위험 분석을 수행하므로 관리 부담이 크다. 따라서 대규모 시스템이나 위험이 큰 프로젝트에 적합하다.
- Boehm이 제안했고 폭포수·프로토타입 모형의 장점에 위험 분석을 더했다는 설명은 옳다.
- 나선을 돌듯 개발 과정을 반복해 점진적으로 완성한다는 설명은 옳다.
- 프로토타입을 발전시키며 누락되거나 추가된 요구사항을 반영할 수 있다는 설명은 옳다.
- 위험 관리와 최소화가 목적이고 위험성 평가에 크게 의존한다는 설명은 옳다.