[계리직 컴퓨터일반] 16년 1회차
계리직 컴퓨터일반 기출문제

16년 1회차

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

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

16년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
2진수 11110000과 10101010에 대해 XOR논리 연산을 수행한 결과 값을 16진수로 바르게 표현한 것은?
15A
26B
3A5
4B6
정답 및 해설

두 수를 비트별로 XOR 하면 01011010 이 되고, 이를 16진수로 바꾸면 5A이다.

XOR는 두 비트가 서로 다르면 1, 같으면 0 을 낸다.
11110000⊕10101010=0101101011110000 \oplus 10101010 = 01011010

4비트씩 끊어 16진수로 바꾼다.
01012=5, 10102=A0101_{2} = 5,\ 1010_{2} = \mathrm{A}
010110102=5A1601011010_{2} = \mathrm{5A}_{16}

  • 6B 는 01101011 로, 계산 결과와 비트 패턴이 다르다.
  • A5 는 상위·하위 4비트를 뒤바꾼 값이다.
  • B6 은 10110110 으로, 계산 결과와 다르다.
문제 2
무선 네트워크 방식에 대한 설명으로 옳은 것은?
1블루투스(Bluetooth)는 동일한 유형의 기기 간에만 통신이 가능하다.
2NFC방식이 블루투스 방식보다 최대 전송 속도가 빠르다.
3NFC방식은 액세스 포인트(access point) 없이 두 장치 간의 통신이 가능하다.
4최대 통신 가능거리를 가까운 것에서 먼 순서로 나열하면 Bluetooth < Wi-Fi < NFC < LTE 순이다.
정답 및 해설

NFC는 액세스 포인트 없이 가까이 댄 두 장치가 직접 통신하는 근거리 무선 방식이므로 옳다.

NFC 는 수 cm 이내의 아주 짧은 거리에서 기기끼리 1:1 로 데이터를 주고받으며, 결제·출입 태그 등에 쓰인다.

  • 블루투스는 프로파일만 맞으면 스마트폰·헤드셋·키보드처럼 서로 다른 유형의 기기 간에도 통신할 수 있다.
  • NFC 는 블루투스보다 최대 전송 속도가 느리다.
  • 통신 거리는 NFC 가 가장 짧고 블루투스, Wi-Fi, LTE 순으로 길어지므로, NFC 를 Wi-Fi 와 LTE 사이에 둔 나열은 틀렸다.
문제 3
<보기>의 프로세스P1, P2, P3을 시간 할당량(time quantum)이 2인 RR(Round-Robin)알고리즘으로 스케줄링할 때, 평균 응답시간으로 옳은 것은? (단, 응답시간이란 프로세스의 도착 시간부터 처리가 종료될 때까지의 시간을 말한다. 계산 결과값을 소수점 둘째자리에서 반올림한다)
<보기>
프로세스도착시간실행시간
P103
P214
P332
15.7
26.0
37.0
47.3
정답 및 해설

평균 응답시간은 약 5.7이다.

시간 할당량 2로 실행하면 P1(0~2) → P2(2~4) → P1(4~5, 종료) → P3(5~7, 종료) → P2(7~9, 종료) 순이다. 시각 2에는 대기 큐에 P2만 있고, P3은 시각 3에 도착해 시각 4에 선점된 P2보다 앞에 선다.

응답시간(종료 − 도착)은 P1 5, P2 8, P3 4이다.
5+8+43=173≈5.67\dfrac{5+8+4}{3}=\dfrac{17}{3}\approx 5.67
소수점 둘째자리에서 반올림하면 5.7이 된다.

  • 6.0: 응답시간 합이 18일 때의 값으로, 실제 합 17과 맞지 않는다.
  • 7.0: 응답시간 합이 21일 때의 값으로, 실제 합 17과 맞지 않는다.
  • 7.3: 응답시간 합이 22일 때의 값으로, 실제 합 17과 맞지 않는다.
문제 4
다음 C프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>
int main() {
int a=120, b=45;
while ( a != b ) {
if ( a > b) a = a - b;
else b = b -a;
}
printf("%d", a);
}
15
215
320
425
정답 및 해설

출력값은 15로, 두 수의 최대공약수를 구하는 코드이다.

큰 수에서 작은 수를 빼는 과정을 두 수가 같아질 때까지 반복한다. (120, 45) → (75, 45) → (30, 45) → (30, 15) → (15, 15)에서 반복이 끝나고 a의 값 15가 출력된다.

  • 5: 120과 45의 공약수이지만 최대공약수가 아니다.
  • 20: 반복 중 어느 단계에서도 나타나지 않는 값이다.
  • 25: 반복 중 어느 단계에서도 나타나지 않는 값이다.
문제 5
<보기>와 같이 수행되는 정렬 알고리즘으로 옳은 것은?
<보기>
  • 단계 0 : 6 5 8 9 4 2
  • 단계 1 : 6 5 8 2 4 9
  • 단계 2 : 6 5 4 2 8 9
  • 단계 3 : 2 5 4 6 8 9
  • 단계 4 : 2 4 5 6 8 9
  • 단계 5 : 2 4 5 6 8 9
1쉘 정렬 (shell sort)
2히프 정렬(heap sort)
3버블 정렬(bubble sort)
4선택 정렬(selection sort)
정답 및 해설

각 단계마다 남은 구간의 최댓값을 골라 끝자리와 한 번 교환하므로 선택 정렬이다.

단계 1에서 9와 2, 단계 2에서 8과 4, 단계 3에서 6과 2를 교환했고 단계 4에서는 5와 4를 교환했다. 한 단계에 교환이 한 번만 일어나는 것이 선택 정렬의 특징이다.

  • 쉘 정렬: 일정 간격으로 떨어진 원소끼리 묶어 삽입 정렬하는 방식이라 이런 교환 형태가 나오지 않는다.
  • 히프 정렬: 먼저 배열을 히프로 재구성하므로 단계 1부터 원소 배치가 크게 바뀐다.
  • 버블 정렬: 인접 원소를 연속 교환하므로 단계 1 결과가 5 6 8 4 2 9처럼 되어야 한다.
문제 6
직원(사번,이름,입사년도,부서)테이블에 대한 SQL 문 중 문법적으로 옳은 것은?
1SELECT COUNT(부서) FROM 직원 GROUP 부서;
2SELECT * FROM 직원 WHERE 입사년도 IS NULL;
3SELECT 이름,입사년도 FROM 직원 WHERE 이름 =‘최%’;
4SELECT 이름,부서 FROM 직원 WHERE 입사년도 =(2014,2015);
정답 및 해설

값이 비어 있는지 비교할 때는 IS NULL 을 쓰므로, 입사년도가 NULL 인 직원을 조회하는 문장이 문법적으로 옳다.

NULL 은 '알 수 없는 값'이라 = 로 비교할 수 없고, 반드시 IS NULL 또는 IS NOT NULL 로 검사한다.

  • 그룹화는 GROUP BY 부서 로 써야 하며, BY 가 빠지면 문법 오류이다.
  • % 같은 와일드카드 패턴 검색은 = 가 아니라 LIKE '최%' 로 써야 한다.
  • 여러 값 중 하나와 일치하는지는 = 가 아니라 IN (2014, 2015) 로 써야 한다.
문제 7
<보기>와 같은 특성을 갖는 하드 디스크의 최대 저장 용량은?
<보기>
  • 실린더 (cylinder) 개수: 32,768 개
  • 면 (surface) 개수: 4개
  • 트랙 (track) 당 섹터 (sector) 개수: 256 개
  • 섹터크기 (sector size): 512 bytes
14GB
216GB
364GB
41TB
정답 및 해설

최대 저장 용량은 16GB이다.

용량 = 실린더 수 × 면 수 × 트랙당 섹터 수 × 섹터 크기이다.
215×22×28×29=234 bytes2^{15}\times 2^{2}\times 2^{8}\times 2^{9}=2^{34}\ \mathrm{bytes}
234=24×2302^{34}=2^{4}\times 2^{30} 이므로 16GB가 된다.

  • 4GB: 면 수 4를 곱하지 않은 값이다.
  • 64GB: 실제 값의 4배로, 면 수를 두 번 곱한 것과 같다.
  • 1TB: 실제 값의 64배로 계산 결과와 거리가 멀다.
문제 8
<보기>의 직원 테이블에서 키(key)와 관련된 설명으로 옳지 않은 것은단,사번과 주민등록번호는 각 유일한 값을 갖고,부서번호는 부서 테이블을 참조하는 속성이며, 나이가 같은 동명이인이 존재할 수 있다)
<보기>
직원(사번, 이름, 주민등록번호, 주소, 나이, 성별, 부서번호)
1부서번호는 외래키이다.
2사번은 기본키가 될 수 있다.
3(이름.나이)는 후보키가 될 수 있다.
4주민등록번호는 대체키가 될 수 있다.
정답 및 해설

(이름, 나이)는 유일성을 만족하지 못해 후보키가 될 수 없다.

조건에서 나이가 같은 동명이인이 있을 수 있다고 했으므로 두 속성을 묶어도 튜플을 하나로 식별할 수 없다. 후보키는 유일성과 최소성을 모두 갖춰야 한다.

  • 부서번호: 부서 테이블을 참조하는 속성이므로 외래키이다.
  • 사번: 유일한 값을 가지므로 기본키로 정할 수 있다.
  • 주민등록번호: 유일한 값을 갖는 후보키로, 사번을 기본키로 정하면 대체키가 된다.
문제 9
소프트웨어 테스트에 대한 설명으로 옳지 않은 것은?
1베타(beta)테스트는 고객 사이트에서 사용자에 의해서 수행된다.
2회귀(regression)테스트는 한 모듈의 수정이 다른 부분에 미치는 영향을 검사한다.
3화이트 박스(white box)테스트는 모듈의 내부 구현보다는 입력과 출력에 의해 기능을 검사한다.
4스트레스(stress) 테스트는 비정상적으로 과도한 분량 또는 빈도로 자원을 요청할 때의 영향을 감사한다.
정답 및 해설

내부 구현이 아니라 입력과 출력만으로 기능을 검사하는 것은 블랙박스 테스트이므로, 이를 화이트박스 테스트로 설명한 것이 옳지 않다.

화이트박스 테스트는 소스 코드의 논리 구조(분기·조건·반복 경로)를 들여다보며 검사하는 구조 기반 테스트이다.

  • 베타 테스트는 개발자 없이 고객 사이트에서 실제 사용자가 수행하는 인수 테스트이다.
  • 회귀 테스트는 수정한 부분이 기존의 다른 부분에 새 오류를 일으키지 않았는지 다시 검사한다.
  • 스트레스 테스트는 비정상적으로 많은 양이나 빈도로 자원을 요구해 한계 상황에서의 동작을 확인한다.
문제 10
<보기>에 선언된 배열 A의 원소 A[8][7]의 주소를 행 우선(row-major) 순서와 열 우선(column-major) 순서로 각각 바르게 계산한 것은단, 첫 번째 원소 A[0][0]의 주소는 1,000이고, 하나의 원소는 1byte를 차지한다.) (순서대로 행 우선 주소, 열 우선 주소)
<보기>
char A[20][30];
11,167, 1,148
21,167, 1,218
31,247, 1,148
41,247, 1,218
정답 및 해설

행 우선 주소는 1,247, 열 우선 주소는 1,148이다.

A는 20행 30열이다. 행 우선은 앞선 8개 행(행당 30개)을 지나 7칸 이동한다.
1000+8×30+7=12471000+8\times 30+7=1247

열 우선은 앞선 7개 열(열당 20개)을 지나 8칸 이동한다.
1000+7×20+8=11481000+7\times 20+8=1148

  • 1,167, 1,148: 행 우선 주소를 한 행의 원소 수 20으로 잘못 잡아 계산한 값이다.
  • 1,167, 1,218: 행 우선·열 우선 모두 행과 열의 크기를 뒤바꿔 계산한 값이다.
  • 1,247, 1,218: 열 우선 주소를 한 열의 원소 수 30으로 잘못 잡아 계산한 값이다.
문제 11
인터넷 주소 체계인 IPv4와 IPv6의 주소 길이와 주소표시 방법을 각각 바르게 나열한 것은? (순서대로 IPv4, IPv6)
1(32비트, 8비트씩 4부분), (128비트, 16비트씩 8부분)
2(32비트, 8비트씩 4부분), (128비트, 8비트씩 16부분)
3(64비트, 16비트씩 4부분), (256비트, 32비트씩 8부분)
4(64비트, 16비트씩 4부분), (256비트, 16비트씩 16부분)
정답 및 해설

IPv4는 32비트를 8비트씩 4부분으로, IPv6는 128비트를 16비트씩 8부분으로 나누어 표시한다.

IPv4 는 192.168.0.1 처럼 10진수 4부분을 점으로 구분하고, IPv6 는 2001:0db8:: 처럼 16진수 4자리씩 8부분을 콜론으로 구분한다.

  • IPv6 를 8비트씩 16부분으로 나눈 조합은 표기 단위가 틀렸다.
  • IPv4 를 64비트, IPv6 를 256비트로 본 조합들은 주소 길이 자체가 틀렸다.
문제 12
<보기>의 이진 트리에 대해 지정된 방법으로 순회한 결과가 옳지 않은 것은?
1중위순회: D → B → A → E → C → F
2레벨순회: A → B → C → D → E → F
3전위순회: A → B → D → C → E → F
4후위순회: D → B → A → E → F → C
정답 및 해설

틀린 것은 후위순회 결과이다. 올바른 후위순회는 D → B → E → F → C → A이다.

후위순회는 왼쪽 서브트리 → 오른쪽 서브트리 → 루트 순이므로 루트 A가 맨 마지막에 와야 한다. 제시된 결과는 A가 중간에 있어 성립하지 않는다.

  • 중위순회 D → B → A → E → C → F: 왼쪽 → 루트 → 오른쪽 순서와 맞다.
  • 레벨순회 A → B → C → D → E → F: 위 레벨부터 왼쪽에서 오른쪽으로 방문한 결과와 맞다.
  • 전위순회 A → B → D → C → E → F: 루트 → 왼쪽 → 오른쪽 순서와 맞다.
문제 13
컴퓨터 시스템의 인터럽트(interrupt)에 대한 설명으로 옳지 않은 것은?
1인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생한다.
2인터럽트 처리 우선순위 결정 방식에는 폴링(polling) 방식과 데이지 체인(daisy-chain) 방식이 있다.
3인터럽트가 추가된 명령어 사이클은 인출 사이클, 인터럽트 사이클, 실행 사이클 순서로 수행된다.
4인터럽트가 발생할 경우, 진행 중인 프로그램의 재개(resume)에 필요한 레지스터 문맥(register context)을 저장한다.
정답 및 해설

인터럽트 사이클은 실행 사이클이 끝난 뒤에 수행되므로, 순서는 인출 → 실행 → 인터럽트이다. 실행보다 인터럽트를 앞에 둔 설명이 옳지 않다.

CPU 는 현재 명령어 실행을 마친 다음 인터럽트 요청을 확인하고, 요청이 있으면 인터럽트 사이클에서 복귀 주소를 저장하고 처리 루틴으로 분기한다.

  • 인터럽트는 입출력 완료, 하드웨어 고장, 0 나누기 같은 프로그램 오류 등으로 발생한다.
  • 우선순위 판별에는 소프트웨어적인 폴링 방식과 하드웨어적인 데이지 체인 방식이 있다.
  • 인터럽트 처리 전 PC 등 레지스터 문맥을 저장해 두어야 처리 후 원래 프로그램을 재개할 수 있다.
문제 14
다음은 3년간 연이율 4%로 매월 적립하는 월 복리 정기적금의 만기지급금을 계산한 결과이다. 셀 C2에 들어갈 수식으로 옳은 것은? (단, 만기지급금의 10원 단위 미만은 절사한다)
ABC
1성명월적립액만기지급금
2김**₩ 30,000₩ 1,145,440
3이**₩ 50,000₩ 1,909,070
1=ROUNDDOWN(FV(4%, 3*12, -B2), -1)
2=ROUNDDOWN(FV(4%, 3*12, -B2), -2)
3=ROUNDDOWN(FV(4%/12, 3*12, -B2), -1)
4=ROUNDDOWN(FV(4%/12, 3*12, -B2), -2)
정답 및 해설

올바른 수식은 =ROUNDDOWN(FV(4%/12, 3*12, -B2), -1)이다.

월 복리이므로 이율은 연이율을 12로 나눈 4%/12, 기간은 3*12=36개월이다. 적립액은 지출이므로 -B2로 넣어 양수 결과를 얻는다.

10원 단위 미만 절사는 일의 자리를 버리는 것이므로 ROUNDDOWN의 자릿수 인수는 -1이다. 결과 1,145,440의 일의 자리가 0인 것과도 맞는다.

  • 연이율 4%를 그대로 쓰고 -1 자리 절사: 월 단위 기간에 연이율을 적용해 금액이 지나치게 커진다.
  • 연이율 4%를 그대로 쓰고 -2 자리 절사: 이율과 절사 자릿수가 모두 틀렸다.
  • 4%/12를 쓰고 -2 자리 절사: 100원 미만을 버려 1,145,400이 되므로 표의 값과 다르다.
문제 15
정점의 개수가 n인 연결그래프로부터 생성 가능한 신장트리(spamming tree)의 간선의 개수는?
1n-1
2n
3n(n-1)/2
4n2
정답 및 해설

정점이 n 개인 연결그래프의 신장트리는 항상 n-1 개의 간선을 가진다.

신장트리는 모든 정점을 사이클 없이 연결한 트리이며, 정점 n 개를 하나로 잇는 트리의 간선 수는 정확히 n-1 이다.

  • 간선이 n 개면 반드시 사이클이 생겨 트리가 아니다.
  • n(n−1)2\dfrac{n(n-1)}{2} 는 무방향 완전그래프의 간선 수이다.
  • n2n^{2} 은 인접 행렬의 원소 수로, 신장트리의 간선 수와 무관하다.
문제 16
<보기>는 관계형 데이터베이스의 정규화 작업을 설명한 것이다. 제1정규형, 제2정규형, 제3정규형, BCNF를 생성하는 정규화 작업을 순서대로 나열한 것은?
<보기>
  • ㄱ. 결정자가 후보키가 아닌 함수 종속성을 제거한다.
  • ㄴ. 부분 함수 종속성을 제거한다.
  • ㄷ. 속성을 원자값만 갖도록 분해한다.
  • ㄹ. 이행적 함수 종속성을 제거한다.
1ㄱ → ㄴ → ㄷ → ㄹ
2ㄱ → ㄷ → ㄹ → ㄴ
3ㄷ → ㄱ → ㄴ → ㄹ
4ㄷ → ㄴ → ㄹ → ㄱ
정답 및 해설

정규화 순서는 ㄷ → ㄴ → ㄹ → ㄱ이다.

제1정규형은 속성을 원자값만 갖도록 분해하고, 제2정규형은 부분 함수 종속, 제3정규형은 이행적 함수 종속을 제거한다. BCNF는 결정자가 후보키가 아닌 함수 종속까지 제거한다.

  • ㄱ → ㄴ → ㄷ → ㄹ: BCNF 작업인 ㄱ이 맨 앞에 와서 제1정규형이 될 수 없다.
  • ㄱ → ㄷ → ㄹ → ㄴ: BCNF 작업이 맨 앞에 오고 부분 함수 종속 제거가 맨 뒤로 밀려 순서가 맞지 않는다.
  • ㄷ → ㄱ → ㄴ → ㄹ: 제2정규형 자리에 BCNF 작업이 와서 순서가 맞지 않는다.
문제 17
다음 Java 프로그램의 실행 결과로 옳은 것은?
class Division  {
public static void main(String[] args) {
int a, b, result;
a = 3;
b = 0;
try {
result = a / b;
System.out.print("A");
}
catch (ArithmeticException e) {
System.out.print("B");
}
finally {
System.out.print("C");
}
System.out.print("D");
}
}
1ACD
2BCD
3ABCD
4BACD
정답 및 해설

출력 결과는 BCD이다.

정수 3을 0으로 나누면 ArithmeticException이 발생해 try 블록의 나머지(A 출력)는 실행되지 않고 catch 블록에서 B를 출력한다. 이어 finally 블록은 항상 실행되어 C를, 예외 처리가 끝난 뒤 D를 출력한다.

  • ACD: 예외가 발생하지 않았을 때의 흐름으로, A는 출력될 수 없다.
  • ABCD: 예외 발생 지점 이후의 A 출력문까지 실행된 것으로 본 잘못된 결과이다.
  • BACD: 예외 처리 후 try 블록으로 되돌아가지 않으므로 A가 나올 수 없다.
문제 18
<보기>는 공개키 암호 방식을 전자 서명(digital signature)에 적용하여 A가 B에게 메시지를 전송하는 과정에 대한 설명이다. ㉠, ㉡에 들어갈 내용으로 옳은 것은? (순서대로 ㉠, ㉡)
<보기>
  • (1) A와 B는 개인키와 공개키 쌍을 각각 생성한다.
  • (2) A는 ( ㉠ )를 사용하여 암호화한 메시지를 B에게 전송한다.
  • (3) B는 ( ㉡ )를 사용하여 수신된 메시지를 해독한다.
1A의 개인키, A의 공개키
2A의 개인키, B의 공개키
3A의 공개키, B의 개인키
4B의 공개키, B의 개인키
정답 및 해설

㉠은 A의 개인키, ㉡은 A의 공개키이다.

전자 서명은 송신자만 가진 개인키로 암호화해 송신자 인증과 부인 방지를 제공한다. 누구나 얻을 수 있는 A의 공개키로 복호화되면 A가 보낸 메시지임이 확인된다.

  • A의 개인키와 B의 공개키: 키 쌍이 서로 달라 복호화되지 않는다.
  • A의 공개키와 B의 개인키: 공개키로 암호화하면 누구나 서명할 수 있어 서명이 되지 않으며 키 쌍도 맞지 않는다.
  • B의 공개키와 B의 개인키: 기밀성을 위한 암호화 방식으로, 송신자를 인증하는 전자 서명이 아니다.
문제 19
프로그래밍 언어에 대한 설명으로 옳지 않은 것은?
1Objective-C, Java, C#은 객체지향 언어이다.
2Python은 정적 타이핑을 지원하는 컴파일러 방식의 언어이다.
3ASP, JSP, PHP는 서버 측에서 실행되는 스크립트 언어이다.
4XML은 전자문서를 표현하는 확장가능한 표준 마크업 언어이다.
정답 및 해설

Python은 실행 중에 변수의 자료형이 정해지는 동적 타이핑 언어이며 인터프리터 방식으로 실행되므로, 정적 타이핑·컴파일러 방식이라는 설명이 옳지 않다.

Python 은 변수 선언 시 자료형을 쓰지 않고, 같은 변수에 다른 자료형의 값을 다시 대입할 수도 있다.

  • Objective-C, Java, C# 은 클래스와 객체를 중심으로 하는 객체지향 언어이다.
  • ASP, JSP, PHP 는 웹 서버에서 실행되어 결과를 HTML 로 보내는 서버 측 스크립트 언어이다.
  • XML 은 사용자가 태그를 정의할 수 있는 확장 가능한 표준 마크업 언어이다.
문제 20
<보기>의 설명에 해당하는 기술로 가장 적절한 것은?
<보기>
  • 서비스 모델은 IaaS, PaaS, SaaS로 구분한다.
  • 필요한 만큼 자원을 임대하여 사용할 수 있다.
  • 가상화 기술, 서비스 프로비저닝(Provisioning) 기술, 과금체계 등을 필요로 한다.
1빅데이터(bigdata)
2딥 러닝(deep learning)
3사물 인터넷(internet of things)
4클라우드 컴퓨팅(cloud computing)
정답 및 해설

설명에 해당하는 기술은 클라우드 컴퓨팅이다.

IaaS·PaaS·SaaS 서비스 모델, 필요한 만큼 자원을 빌려 쓰는 종량제 임대, 가상화와 프로비저닝 기술은 모두 클라우드 컴퓨팅의 특징이다.

  • 빅데이터: 대용량 데이터를 수집·분석하는 기술로 서비스 모델 구분과 관련이 없다.
  • 딥 러닝: 다층 신경망 기반 기계 학습 기법이다.
  • 사물 인터넷: 사물에 센서와 통신 기능을 넣어 인터넷으로 연결하는 기술이다.
계리직 컴퓨터일반 기출문제모두CBT · moducbt.com
16년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
2진수 11110000과 10101010에 대해 XOR논리 연산을 수행한 결과 값을 16진수로 바르게 표현한 것은?
15A
26B
3A5
4B6
정답 및 해설

두 수를 비트별로 XOR 하면 01011010 이 되고, 이를 16진수로 바꾸면 5A이다.

XOR는 두 비트가 서로 다르면 1, 같으면 0 을 낸다.
11110000⊕10101010=0101101011110000 \oplus 10101010 = 01011010

4비트씩 끊어 16진수로 바꾼다.
01012=5, 10102=A0101_{2} = 5,\ 1010_{2} = \mathrm{A}
010110102=5A1601011010_{2} = \mathrm{5A}_{16}

  • 6B 는 01101011 로, 계산 결과와 비트 패턴이 다르다.
  • A5 는 상위·하위 4비트를 뒤바꾼 값이다.
  • B6 은 10110110 으로, 계산 결과와 다르다.
문제 2
무선 네트워크 방식에 대한 설명으로 옳은 것은?
1블루투스(Bluetooth)는 동일한 유형의 기기 간에만 통신이 가능하다.
2NFC방식이 블루투스 방식보다 최대 전송 속도가 빠르다.
3NFC방식은 액세스 포인트(access point) 없이 두 장치 간의 통신이 가능하다.
4최대 통신 가능거리를 가까운 것에서 먼 순서로 나열하면 Bluetooth < Wi-Fi < NFC < LTE 순이다.
정답 및 해설

NFC는 액세스 포인트 없이 가까이 댄 두 장치가 직접 통신하는 근거리 무선 방식이므로 옳다.

NFC 는 수 cm 이내의 아주 짧은 거리에서 기기끼리 1:1 로 데이터를 주고받으며, 결제·출입 태그 등에 쓰인다.

  • 블루투스는 프로파일만 맞으면 스마트폰·헤드셋·키보드처럼 서로 다른 유형의 기기 간에도 통신할 수 있다.
  • NFC 는 블루투스보다 최대 전송 속도가 느리다.
  • 통신 거리는 NFC 가 가장 짧고 블루투스, Wi-Fi, LTE 순으로 길어지므로, NFC 를 Wi-Fi 와 LTE 사이에 둔 나열은 틀렸다.
문제 3
<보기>의 프로세스P1, P2, P3을 시간 할당량(time quantum)이 2인 RR(Round-Robin)알고리즘으로 스케줄링할 때, 평균 응답시간으로 옳은 것은? (단, 응답시간이란 프로세스의 도착 시간부터 처리가 종료될 때까지의 시간을 말한다. 계산 결과값을 소수점 둘째자리에서 반올림한다)
<보기>
프로세스도착시간실행시간
P103
P214
P332
15.7
26.0
37.0
47.3
정답 및 해설

평균 응답시간은 약 5.7이다.

시간 할당량 2로 실행하면 P1(0~2) → P2(2~4) → P1(4~5, 종료) → P3(5~7, 종료) → P2(7~9, 종료) 순이다. 시각 2에는 대기 큐에 P2만 있고, P3은 시각 3에 도착해 시각 4에 선점된 P2보다 앞에 선다.

응답시간(종료 − 도착)은 P1 5, P2 8, P3 4이다.
5+8+43=173≈5.67\dfrac{5+8+4}{3}=\dfrac{17}{3}\approx 5.67
소수점 둘째자리에서 반올림하면 5.7이 된다.

  • 6.0: 응답시간 합이 18일 때의 값으로, 실제 합 17과 맞지 않는다.
  • 7.0: 응답시간 합이 21일 때의 값으로, 실제 합 17과 맞지 않는다.
  • 7.3: 응답시간 합이 22일 때의 값으로, 실제 합 17과 맞지 않는다.
문제 4
다음 C프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>
int main() {
int a=120, b=45;
while ( a != b ) {
if ( a > b) a = a - b;
else b = b -a;
}
printf("%d", a);
}
15
215
320
425
정답 및 해설

출력값은 15로, 두 수의 최대공약수를 구하는 코드이다.

큰 수에서 작은 수를 빼는 과정을 두 수가 같아질 때까지 반복한다. (120, 45) → (75, 45) → (30, 45) → (30, 15) → (15, 15)에서 반복이 끝나고 a의 값 15가 출력된다.

  • 5: 120과 45의 공약수이지만 최대공약수가 아니다.
  • 20: 반복 중 어느 단계에서도 나타나지 않는 값이다.
  • 25: 반복 중 어느 단계에서도 나타나지 않는 값이다.
문제 5
<보기>와 같이 수행되는 정렬 알고리즘으로 옳은 것은?
<보기>
  • 단계 0 : 6 5 8 9 4 2
  • 단계 1 : 6 5 8 2 4 9
  • 단계 2 : 6 5 4 2 8 9
  • 단계 3 : 2 5 4 6 8 9
  • 단계 4 : 2 4 5 6 8 9
  • 단계 5 : 2 4 5 6 8 9
1쉘 정렬 (shell sort)
2히프 정렬(heap sort)
3버블 정렬(bubble sort)
4선택 정렬(selection sort)
정답 및 해설

각 단계마다 남은 구간의 최댓값을 골라 끝자리와 한 번 교환하므로 선택 정렬이다.

단계 1에서 9와 2, 단계 2에서 8과 4, 단계 3에서 6과 2를 교환했고 단계 4에서는 5와 4를 교환했다. 한 단계에 교환이 한 번만 일어나는 것이 선택 정렬의 특징이다.

  • 쉘 정렬: 일정 간격으로 떨어진 원소끼리 묶어 삽입 정렬하는 방식이라 이런 교환 형태가 나오지 않는다.
  • 히프 정렬: 먼저 배열을 히프로 재구성하므로 단계 1부터 원소 배치가 크게 바뀐다.
  • 버블 정렬: 인접 원소를 연속 교환하므로 단계 1 결과가 5 6 8 4 2 9처럼 되어야 한다.
문제 6
직원(사번,이름,입사년도,부서)테이블에 대한 SQL 문 중 문법적으로 옳은 것은?
1SELECT COUNT(부서) FROM 직원 GROUP 부서;
2SELECT * FROM 직원 WHERE 입사년도 IS NULL;
3SELECT 이름,입사년도 FROM 직원 WHERE 이름 =‘최%’;
4SELECT 이름,부서 FROM 직원 WHERE 입사년도 =(2014,2015);
정답 및 해설

값이 비어 있는지 비교할 때는 IS NULL 을 쓰므로, 입사년도가 NULL 인 직원을 조회하는 문장이 문법적으로 옳다.

NULL 은 '알 수 없는 값'이라 = 로 비교할 수 없고, 반드시 IS NULL 또는 IS NOT NULL 로 검사한다.

  • 그룹화는 GROUP BY 부서 로 써야 하며, BY 가 빠지면 문법 오류이다.
  • % 같은 와일드카드 패턴 검색은 = 가 아니라 LIKE '최%' 로 써야 한다.
  • 여러 값 중 하나와 일치하는지는 = 가 아니라 IN (2014, 2015) 로 써야 한다.
문제 7
<보기>와 같은 특성을 갖는 하드 디스크의 최대 저장 용량은?
<보기>
  • 실린더 (cylinder) 개수: 32,768 개
  • 면 (surface) 개수: 4개
  • 트랙 (track) 당 섹터 (sector) 개수: 256 개
  • 섹터크기 (sector size): 512 bytes
14GB
216GB
364GB
41TB
정답 및 해설

최대 저장 용량은 16GB이다.

용량 = 실린더 수 × 면 수 × 트랙당 섹터 수 × 섹터 크기이다.
215×22×28×29=234 bytes2^{15}\times 2^{2}\times 2^{8}\times 2^{9}=2^{34}\ \mathrm{bytes}
234=24×2302^{34}=2^{4}\times 2^{30} 이므로 16GB가 된다.

  • 4GB: 면 수 4를 곱하지 않은 값이다.
  • 64GB: 실제 값의 4배로, 면 수를 두 번 곱한 것과 같다.
  • 1TB: 실제 값의 64배로 계산 결과와 거리가 멀다.
문제 8
<보기>의 직원 테이블에서 키(key)와 관련된 설명으로 옳지 않은 것은단,사번과 주민등록번호는 각 유일한 값을 갖고,부서번호는 부서 테이블을 참조하는 속성이며, 나이가 같은 동명이인이 존재할 수 있다)
<보기>
직원(사번, 이름, 주민등록번호, 주소, 나이, 성별, 부서번호)
1부서번호는 외래키이다.
2사번은 기본키가 될 수 있다.
3(이름.나이)는 후보키가 될 수 있다.
4주민등록번호는 대체키가 될 수 있다.
정답 및 해설

(이름, 나이)는 유일성을 만족하지 못해 후보키가 될 수 없다.

조건에서 나이가 같은 동명이인이 있을 수 있다고 했으므로 두 속성을 묶어도 튜플을 하나로 식별할 수 없다. 후보키는 유일성과 최소성을 모두 갖춰야 한다.

  • 부서번호: 부서 테이블을 참조하는 속성이므로 외래키이다.
  • 사번: 유일한 값을 가지므로 기본키로 정할 수 있다.
  • 주민등록번호: 유일한 값을 갖는 후보키로, 사번을 기본키로 정하면 대체키가 된다.
문제 9
소프트웨어 테스트에 대한 설명으로 옳지 않은 것은?
1베타(beta)테스트는 고객 사이트에서 사용자에 의해서 수행된다.
2회귀(regression)테스트는 한 모듈의 수정이 다른 부분에 미치는 영향을 검사한다.
3화이트 박스(white box)테스트는 모듈의 내부 구현보다는 입력과 출력에 의해 기능을 검사한다.
4스트레스(stress) 테스트는 비정상적으로 과도한 분량 또는 빈도로 자원을 요청할 때의 영향을 감사한다.
정답 및 해설

내부 구현이 아니라 입력과 출력만으로 기능을 검사하는 것은 블랙박스 테스트이므로, 이를 화이트박스 테스트로 설명한 것이 옳지 않다.

화이트박스 테스트는 소스 코드의 논리 구조(분기·조건·반복 경로)를 들여다보며 검사하는 구조 기반 테스트이다.

  • 베타 테스트는 개발자 없이 고객 사이트에서 실제 사용자가 수행하는 인수 테스트이다.
  • 회귀 테스트는 수정한 부분이 기존의 다른 부분에 새 오류를 일으키지 않았는지 다시 검사한다.
  • 스트레스 테스트는 비정상적으로 많은 양이나 빈도로 자원을 요구해 한계 상황에서의 동작을 확인한다.
문제 10
<보기>에 선언된 배열 A의 원소 A[8][7]의 주소를 행 우선(row-major) 순서와 열 우선(column-major) 순서로 각각 바르게 계산한 것은단, 첫 번째 원소 A[0][0]의 주소는 1,000이고, 하나의 원소는 1byte를 차지한다.) (순서대로 행 우선 주소, 열 우선 주소)
<보기>
char A[20][30];
11,167, 1,148
21,167, 1,218
31,247, 1,148
41,247, 1,218
정답 및 해설

행 우선 주소는 1,247, 열 우선 주소는 1,148이다.

A는 20행 30열이다. 행 우선은 앞선 8개 행(행당 30개)을 지나 7칸 이동한다.
1000+8×30+7=12471000+8\times 30+7=1247

열 우선은 앞선 7개 열(열당 20개)을 지나 8칸 이동한다.
1000+7×20+8=11481000+7\times 20+8=1148

  • 1,167, 1,148: 행 우선 주소를 한 행의 원소 수 20으로 잘못 잡아 계산한 값이다.
  • 1,167, 1,218: 행 우선·열 우선 모두 행과 열의 크기를 뒤바꿔 계산한 값이다.
  • 1,247, 1,218: 열 우선 주소를 한 열의 원소 수 30으로 잘못 잡아 계산한 값이다.
문제 11
인터넷 주소 체계인 IPv4와 IPv6의 주소 길이와 주소표시 방법을 각각 바르게 나열한 것은? (순서대로 IPv4, IPv6)
1(32비트, 8비트씩 4부분), (128비트, 16비트씩 8부분)
2(32비트, 8비트씩 4부분), (128비트, 8비트씩 16부분)
3(64비트, 16비트씩 4부분), (256비트, 32비트씩 8부분)
4(64비트, 16비트씩 4부분), (256비트, 16비트씩 16부분)
정답 및 해설

IPv4는 32비트를 8비트씩 4부분으로, IPv6는 128비트를 16비트씩 8부분으로 나누어 표시한다.

IPv4 는 192.168.0.1 처럼 10진수 4부분을 점으로 구분하고, IPv6 는 2001:0db8:: 처럼 16진수 4자리씩 8부분을 콜론으로 구분한다.

  • IPv6 를 8비트씩 16부분으로 나눈 조합은 표기 단위가 틀렸다.
  • IPv4 를 64비트, IPv6 를 256비트로 본 조합들은 주소 길이 자체가 틀렸다.
문제 12
<보기>의 이진 트리에 대해 지정된 방법으로 순회한 결과가 옳지 않은 것은?
1중위순회: D → B → A → E → C → F
2레벨순회: A → B → C → D → E → F
3전위순회: A → B → D → C → E → F
4후위순회: D → B → A → E → F → C
정답 및 해설

틀린 것은 후위순회 결과이다. 올바른 후위순회는 D → B → E → F → C → A이다.

후위순회는 왼쪽 서브트리 → 오른쪽 서브트리 → 루트 순이므로 루트 A가 맨 마지막에 와야 한다. 제시된 결과는 A가 중간에 있어 성립하지 않는다.

  • 중위순회 D → B → A → E → C → F: 왼쪽 → 루트 → 오른쪽 순서와 맞다.
  • 레벨순회 A → B → C → D → E → F: 위 레벨부터 왼쪽에서 오른쪽으로 방문한 결과와 맞다.
  • 전위순회 A → B → D → C → E → F: 루트 → 왼쪽 → 오른쪽 순서와 맞다.
문제 13
컴퓨터 시스템의 인터럽트(interrupt)에 대한 설명으로 옳지 않은 것은?
1인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생한다.
2인터럽트 처리 우선순위 결정 방식에는 폴링(polling) 방식과 데이지 체인(daisy-chain) 방식이 있다.
3인터럽트가 추가된 명령어 사이클은 인출 사이클, 인터럽트 사이클, 실행 사이클 순서로 수행된다.
4인터럽트가 발생할 경우, 진행 중인 프로그램의 재개(resume)에 필요한 레지스터 문맥(register context)을 저장한다.
정답 및 해설

인터럽트 사이클은 실행 사이클이 끝난 뒤에 수행되므로, 순서는 인출 → 실행 → 인터럽트이다. 실행보다 인터럽트를 앞에 둔 설명이 옳지 않다.

CPU 는 현재 명령어 실행을 마친 다음 인터럽트 요청을 확인하고, 요청이 있으면 인터럽트 사이클에서 복귀 주소를 저장하고 처리 루틴으로 분기한다.

  • 인터럽트는 입출력 완료, 하드웨어 고장, 0 나누기 같은 프로그램 오류 등으로 발생한다.
  • 우선순위 판별에는 소프트웨어적인 폴링 방식과 하드웨어적인 데이지 체인 방식이 있다.
  • 인터럽트 처리 전 PC 등 레지스터 문맥을 저장해 두어야 처리 후 원래 프로그램을 재개할 수 있다.
문제 14
다음은 3년간 연이율 4%로 매월 적립하는 월 복리 정기적금의 만기지급금을 계산한 결과이다. 셀 C2에 들어갈 수식으로 옳은 것은? (단, 만기지급금의 10원 단위 미만은 절사한다)
ABC
1성명월적립액만기지급금
2김**₩ 30,000₩ 1,145,440
3이**₩ 50,000₩ 1,909,070
1=ROUNDDOWN(FV(4%, 3*12, -B2), -1)
2=ROUNDDOWN(FV(4%, 3*12, -B2), -2)
3=ROUNDDOWN(FV(4%/12, 3*12, -B2), -1)
4=ROUNDDOWN(FV(4%/12, 3*12, -B2), -2)
정답 및 해설

올바른 수식은 =ROUNDDOWN(FV(4%/12, 3*12, -B2), -1)이다.

월 복리이므로 이율은 연이율을 12로 나눈 4%/12, 기간은 3*12=36개월이다. 적립액은 지출이므로 -B2로 넣어 양수 결과를 얻는다.

10원 단위 미만 절사는 일의 자리를 버리는 것이므로 ROUNDDOWN의 자릿수 인수는 -1이다. 결과 1,145,440의 일의 자리가 0인 것과도 맞는다.

  • 연이율 4%를 그대로 쓰고 -1 자리 절사: 월 단위 기간에 연이율을 적용해 금액이 지나치게 커진다.
  • 연이율 4%를 그대로 쓰고 -2 자리 절사: 이율과 절사 자릿수가 모두 틀렸다.
  • 4%/12를 쓰고 -2 자리 절사: 100원 미만을 버려 1,145,400이 되므로 표의 값과 다르다.
문제 15
정점의 개수가 n인 연결그래프로부터 생성 가능한 신장트리(spamming tree)의 간선의 개수는?
1n-1
2n
3n(n-1)/2
4n2
정답 및 해설

정점이 n 개인 연결그래프의 신장트리는 항상 n-1 개의 간선을 가진다.

신장트리는 모든 정점을 사이클 없이 연결한 트리이며, 정점 n 개를 하나로 잇는 트리의 간선 수는 정확히 n-1 이다.

  • 간선이 n 개면 반드시 사이클이 생겨 트리가 아니다.
  • n(n−1)2\dfrac{n(n-1)}{2} 는 무방향 완전그래프의 간선 수이다.
  • n2n^{2} 은 인접 행렬의 원소 수로, 신장트리의 간선 수와 무관하다.
문제 16
<보기>는 관계형 데이터베이스의 정규화 작업을 설명한 것이다. 제1정규형, 제2정규형, 제3정규형, BCNF를 생성하는 정규화 작업을 순서대로 나열한 것은?
<보기>
  • ㄱ. 결정자가 후보키가 아닌 함수 종속성을 제거한다.
  • ㄴ. 부분 함수 종속성을 제거한다.
  • ㄷ. 속성을 원자값만 갖도록 분해한다.
  • ㄹ. 이행적 함수 종속성을 제거한다.
1ㄱ → ㄴ → ㄷ → ㄹ
2ㄱ → ㄷ → ㄹ → ㄴ
3ㄷ → ㄱ → ㄴ → ㄹ
4ㄷ → ㄴ → ㄹ → ㄱ
정답 및 해설

정규화 순서는 ㄷ → ㄴ → ㄹ → ㄱ이다.

제1정규형은 속성을 원자값만 갖도록 분해하고, 제2정규형은 부분 함수 종속, 제3정규형은 이행적 함수 종속을 제거한다. BCNF는 결정자가 후보키가 아닌 함수 종속까지 제거한다.

  • ㄱ → ㄴ → ㄷ → ㄹ: BCNF 작업인 ㄱ이 맨 앞에 와서 제1정규형이 될 수 없다.
  • ㄱ → ㄷ → ㄹ → ㄴ: BCNF 작업이 맨 앞에 오고 부분 함수 종속 제거가 맨 뒤로 밀려 순서가 맞지 않는다.
  • ㄷ → ㄱ → ㄴ → ㄹ: 제2정규형 자리에 BCNF 작업이 와서 순서가 맞지 않는다.
문제 17
다음 Java 프로그램의 실행 결과로 옳은 것은?
class Division  {
public static void main(String[] args) {
int a, b, result;
a = 3;
b = 0;
try {
result = a / b;
System.out.print("A");
}
catch (ArithmeticException e) {
System.out.print("B");
}
finally {
System.out.print("C");
}
System.out.print("D");
}
}
1ACD
2BCD
3ABCD
4BACD
정답 및 해설

출력 결과는 BCD이다.

정수 3을 0으로 나누면 ArithmeticException이 발생해 try 블록의 나머지(A 출력)는 실행되지 않고 catch 블록에서 B를 출력한다. 이어 finally 블록은 항상 실행되어 C를, 예외 처리가 끝난 뒤 D를 출력한다.

  • ACD: 예외가 발생하지 않았을 때의 흐름으로, A는 출력될 수 없다.
  • ABCD: 예외 발생 지점 이후의 A 출력문까지 실행된 것으로 본 잘못된 결과이다.
  • BACD: 예외 처리 후 try 블록으로 되돌아가지 않으므로 A가 나올 수 없다.
문제 18
<보기>는 공개키 암호 방식을 전자 서명(digital signature)에 적용하여 A가 B에게 메시지를 전송하는 과정에 대한 설명이다. ㉠, ㉡에 들어갈 내용으로 옳은 것은? (순서대로 ㉠, ㉡)
<보기>
  • (1) A와 B는 개인키와 공개키 쌍을 각각 생성한다.
  • (2) A는 ( ㉠ )를 사용하여 암호화한 메시지를 B에게 전송한다.
  • (3) B는 ( ㉡ )를 사용하여 수신된 메시지를 해독한다.
1A의 개인키, A의 공개키
2A의 개인키, B의 공개키
3A의 공개키, B의 개인키
4B의 공개키, B의 개인키
정답 및 해설

㉠은 A의 개인키, ㉡은 A의 공개키이다.

전자 서명은 송신자만 가진 개인키로 암호화해 송신자 인증과 부인 방지를 제공한다. 누구나 얻을 수 있는 A의 공개키로 복호화되면 A가 보낸 메시지임이 확인된다.

  • A의 개인키와 B의 공개키: 키 쌍이 서로 달라 복호화되지 않는다.
  • A의 공개키와 B의 개인키: 공개키로 암호화하면 누구나 서명할 수 있어 서명이 되지 않으며 키 쌍도 맞지 않는다.
  • B의 공개키와 B의 개인키: 기밀성을 위한 암호화 방식으로, 송신자를 인증하는 전자 서명이 아니다.
문제 19
프로그래밍 언어에 대한 설명으로 옳지 않은 것은?
1Objective-C, Java, C#은 객체지향 언어이다.
2Python은 정적 타이핑을 지원하는 컴파일러 방식의 언어이다.
3ASP, JSP, PHP는 서버 측에서 실행되는 스크립트 언어이다.
4XML은 전자문서를 표현하는 확장가능한 표준 마크업 언어이다.
정답 및 해설

Python은 실행 중에 변수의 자료형이 정해지는 동적 타이핑 언어이며 인터프리터 방식으로 실행되므로, 정적 타이핑·컴파일러 방식이라는 설명이 옳지 않다.

Python 은 변수 선언 시 자료형을 쓰지 않고, 같은 변수에 다른 자료형의 값을 다시 대입할 수도 있다.

  • Objective-C, Java, C# 은 클래스와 객체를 중심으로 하는 객체지향 언어이다.
  • ASP, JSP, PHP 는 웹 서버에서 실행되어 결과를 HTML 로 보내는 서버 측 스크립트 언어이다.
  • XML 은 사용자가 태그를 정의할 수 있는 확장 가능한 표준 마크업 언어이다.
문제 20
<보기>의 설명에 해당하는 기술로 가장 적절한 것은?
<보기>
  • 서비스 모델은 IaaS, PaaS, SaaS로 구분한다.
  • 필요한 만큼 자원을 임대하여 사용할 수 있다.
  • 가상화 기술, 서비스 프로비저닝(Provisioning) 기술, 과금체계 등을 필요로 한다.
1빅데이터(bigdata)
2딥 러닝(deep learning)
3사물 인터넷(internet of things)
4클라우드 컴퓨팅(cloud computing)
정답 및 해설

설명에 해당하는 기술은 클라우드 컴퓨팅이다.

IaaS·PaaS·SaaS 서비스 모델, 필요한 만큼 자원을 빌려 쓰는 종량제 임대, 가상화와 프로비저닝 기술은 모두 클라우드 컴퓨팅의 특징이다.

  • 빅데이터: 대용량 데이터를 수집·분석하는 기술로 서비스 모델 구분과 관련이 없다.
  • 딥 러닝: 다층 신경망 기반 기계 학습 기법이다.
  • 사물 인터넷: 사물에 센서와 통신 기능을 넣어 인터넷으로 연결하는 기술이다.