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

19년 1회차

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

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

19년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
동기식 전송(Synchronous Transmission)에 대한 설명으로 옳지 않은 것은?
1정해진 숫자만큼의 문자열을 묶어 일시에 전송한다.
2작은 비트블록 앞뒤에 Start Bit와 Stop Bit를 삽입하여 비트블록을 동기화한다.
32,400bps 이상 속도의 전송과 원거리 전송에 이용된다.
4블록과 블록 사이에 유휴시간(Idle Time)이 없어 전송효율이 높다.
정답 및 해설

Start Bit와 Stop Bit를 문자마다 붙여 동기를 맞추는 것은 동기식이 아니라 비동기식 전송의 특징이므로 옳지 않다.

동기식 전송은 여러 문자를 하나의 블록(프레임)으로 묶고, 앞뒤에 동기 문자나 플래그를 두어 송수신 측이 클록을 맞춘 채 연속 전송한다.

  • 정해진 수의 문자열을 블록으로 묶어 한꺼번에 보내는 것은 동기식 전송의 기본 방식이다.
  • 고속(2,400bps 이상)·원거리 전송에 쓰인다는 설명은 동기식의 특징으로 옳다.
  • 블록 사이에 유휴시간이 없어 전송 효율이 높다는 설명도 동기식의 장점으로 옳다.
문제 2
어떤 프로젝트를 완성하기 위해 작업 분할(Work Breakdown)을 통해 파악된, 다음 소작업(activity) 목록을 AOE(Activity On Edge) 네트워크로 표현하였을 때, 이 프로젝트가 끝날 수 있는 가장 빠른 소요시간은?
소작업 이름소요시간선행 소작업
a5없음
b5없음
c8a, b
d2c
e3b, c
f4d
g5e, f
113
221
324
432
정답 및 해설

프로젝트가 끝날 수 있는 가장 빠른 소요시간은 임계 경로(critical path)의 길이인 24이다.

각 소작업의 가장 이른 완료 시각은 선행 작업 중 가장 늦게 끝나는 시각에 자기 소요시간을 더해 구한다.

a·b는 5에 끝나고, c는 5+8=13, d는 13+2=15, f는 15+4=19, e는 max(5, 13)+3=16이다.
g는 e(16)와 f(19) 중 늦은 19에 시작하므로 19+5=24에 끝난다.

  • 13: c까지만 끝난 시각으로, 뒤따르는 d·e·f·g가 남아 있다.
  • 21: 경로 a→c→e→g(5+8+3+5)의 길이로, 더 긴 경로 a→c→d→f→g를 놓친 값이다.
  • 32: 모든 소작업 시간을 단순 합산한 값으로, 병렬로 진행되는 작업을 고려하지 않았다.
문제 3
다음에 제시된 입력 데이터를 엑셀 서식의 표시 형식 코드에 따라 출력한 결과로 옳은 것은?
  • 입력 데이터 : 1234.5
  • 표시 형식 코드 : #,##0
11,234
21,235
31,234.5
41,234.50
정답 및 해설

출력 결과는 1,235이다.

표시 형식 코드 #,##0은 천 단위마다 쉼표를 넣고 소수 자릿수 없이 정수로 표시하며, 버려지는 소수부는 반올림된다. 따라서 1234.5는 1,235로 표시된다.

  • 1,234: 소수부를 반올림하지 않고 버린 결과로, 엑셀 표시 형식의 동작과 다르다.
  • 1,234.5: 소수 첫째 자리를 표시하려면 #,##0.0 형식이 필요하다.
  • 1,234.50: 소수 둘째 자리까지 표시하려면 #,##0.00 형식이 필요하다.
문제 4
객체지향 소프트웨어 개발 및 UML Diagram에 대한 설명이다. ㉠~㉢에 들어갈 내용을 바르게 짝지은 것은? (순서대로 ㉠, ㉡, ㉢)
  • ( ㉠ )은/는 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조로, 시스템 전체에 대한 큰 밑그림이다. 소프트웨어 품질 요구 사항은 ( ㉠ )을/를 결정하는 데 주요한 요소로 작용한다.
  • ( ㉡ )은/는 두 개 이상의 클래스에서 동일한 메시지에 대해 객체가 다르게 반응하는 것이다.
  • ( ㉢ )은/는 객체 간의 메시지 통신을 분석하기 위한 것으로 시스템의 동작을 정형화하고 객체들의 메시지 교환을 시각화한다.
1소프트웨어 아키텍처, 다형성, 시퀀스 모델
2유스케이스, 다형성, 시퀀스 모델
3클래스 다이어그램, 캡슐화, 상태 모델
4디자인 패턴, 캡슐화, 상태 모델
정답 및 해설

㉠은 소프트웨어 아키텍처, ㉡은 다형성, ㉢은 시퀀스 모델이다.

시스템 전체의 골격이자 품질 요구 사항에 따라 결정되는 구조는 아키텍처이고, 같은 메시지에 클래스마다 다르게 반응하는 성질은 다형성이며, 객체 간 메시지 교환을 시간 순서로 시각화하는 것은 시퀀스 다이어그램(모델)이다.

  • 유스케이스: 사용자 관점의 시스템 기능을 표현할 뿐, 시스템 전체의 구조적 골격을 뜻하지 않는다.
  • 클래스 다이어그램, 캡슐화, 상태 모델: 캡슐화는 데이터와 연산을 묶고 내부를 숨기는 개념이고, 상태 모델은 한 객체의 상태 변화를 표현하므로 ㉡·㉢에 맞지 않는다.
  • 디자인 패턴, 캡슐화, 상태 모델: 디자인 패턴은 반복되는 설계 문제의 재사용 해법으로 시스템 전체의 밑그림이 아니며, ㉡·㉢도 맞지 않는다.
문제 5
공개키 암호방식에 대한 설명으로 옳은 것은?
1송신자는 전송메시지에 대한 MAC(Message Authentication Code)을 생성하고 수신자는 그 MAC을 점검함으로써 메시지가 전송과정에서 변조되었는지 여부를 확인한다.
2송신자는 수신자의 개인키를 이용하여 암호화한 메시지를 송신하고 수신자는 수신한 메시지를 자신의 공개키를 이용하여 복호화한다.
3송수신자 규모가 동일할 경우, 공개키 암호방식이 대칭키 암호방식보다 더 많은 키들을 필요로 하기 때문에 인증기관이 키 관리를 담당한다.
4키 운영의 신뢰성을 공식적으로 제공하기 위하여 인증기관은 고객별로 개인키와 키 소유자 정보를 만들고 이를 해당 고객에게 인증서로 제공한다.
정답 및 해설

송신자가 만든 MAC을 수신자가 점검해 전송 중 변조 여부를 확인한다는 설명이 옳은 서술이다. MAC은 공개키 방식 고유의 기법은 아니지만 메시지 무결성 확인 방법으로서 서술 자체에 오류가 없다.

나머지 설명은 공개키 방식의 키 사용 방향, 필요한 키 개수, 개인키 관리 주체를 잘못 서술하고 있다. 공개키 방식에서는 수신자의 공개키로 암호화하고 수신자가 자신의 개인키로 복호화한다.

  • 수신자의 개인키로 암호화하고 공개키로 복호화한다는 설명은 키 사용 방향이 뒤바뀌었다.
  • 사용자 n명일 때 대칭키는 n(n−1)2\dfrac{n(n-1)}{2}개, 공개키는 2n2n개가 필요해 규모가 커질수록 대칭키 방식의 키 수가 훨씬 많아지므로, 공개키 방식이 더 많은 키를 필요로 한다는 설명은 틀리다.
  • 개인키는 사용자가 직접 생성·보관하며, 인증기관이 발급하는 인증서에는 공개키와 소유자 정보가 담기므로 인증기관이 개인키를 만들어 준다는 설명은 틀리다.
문제 6
온라인에서 멀티미디어 콘텐츠의 불법 유통을 방지하기 위해 삽입된 워터마킹 기술의 특성으로 옳지 않은 것은?
1부인 방지성
2비가시성
3강인성
4권리정보 추출성
정답 및 해설

부인 방지성은 전자서명 등 인증 기술이 제공하는 보안 서비스로, 워터마킹 기술의 특성이 아니다.

디지털 워터마킹은 콘텐츠에 저작권 정보를 숨겨 삽입하는 기술로, 비가시성으로 품질을 해치지 않으면서 강인성으로 공격에도 남아 있고 필요할 때 권리정보를 꺼낼 수 있어야 한다.

  • 비가시성: 삽입된 워터마크가 사람 눈이나 귀로 식별되지 않아 원본 품질을 유지해야 한다.
  • 강인성: 압축·필터링·자르기 등 변형이나 공격에도 워터마크가 제거되지 않아야 한다.
  • 권리정보 추출성: 분쟁 시 삽입된 저작권 정보를 정확히 추출해 소유권을 입증할 수 있어야 한다.
문제 7
프로세스 관리 과정에서 발생할 수 있는 교착상태(Deadlock)를 예방하기 위한 조치로 옳은 것은?
1상호배제(Mutual Exclusion) 조건을 제거하고자 할 경우, 프로세스 A가 점유하고 있던 자원에 대하여 프로세스 B로부터 할당 요청이 있을 때 프로세스 B에게도 해당자원을 할당하여 준다. 운영체제는 프로세스 A와 프로세스 B가 종료되는 시점에서 일관성을 점검하여 프로세스 A와 프로세스 B 중 하나를 철회시킨다.
2점유대기(Hold and Wait) 조건을 제거하고자 할 경우, 자원을 점유한 프로세스가 다른 자원을 요청하였지만 할당받지 못하면 일단 자신이 점유한 자원을 반납한다. 이후 그 프로세스는 반납하였던 자원과 요청하였던 자원을 함께 요청한다.
3비선점(No Preemption) 조건을 제거하고자 할 경우, 프로세스는 시작시점에서 자신이 사용할 모든 자원들에 대하여 일괄할당을 요청한다. 일괄할당이 이루어지지 않을 경우, 일괄할당이 이루어 지기까지 지연됨에 따른 성능저하가 발생할 수 있다.
4환형대기(Circular Wait) 조건을 제거하고자 할 경우, 자원들의 할당 순서를 정한다. 자원 Ri가 자원 Rk보다 먼저 할당되는 것으로 정하였을 경우, 프로세스 A가 Ri를 할당받은 후 Rk를 요청한 상태에서 프로세스 B가 Rk를 할당받은 후 Ri를 요청하면 교착상태가 발생하므로 운영체제는 프로세스 B의 자원요청을 거부한다.
정답 및 해설

환형대기 조건은 자원에 할당 순서를 정하고 그 순서대로만 요청하게 하여 제거하며, 순서를 어긴 요청은 거부한다는 설명이 옳다.

RiR_i를 RkR_k보다 먼저 할당하기로 정했다면, RkR_k를 가진 프로세스 B가 RiR_i를 요청하는 것은 순서 위반이므로 거부되어 순환 대기가 생기지 않는다.

  • 상호배제는 자원 고유의 성질이라 제거하기 어렵고, 점유 중인 자원을 다른 프로세스에도 동시에 할당한 뒤 나중에 철회하는 방식은 교착상태 예방 기법이 아니다.
  • 할당받지 못하면 점유한 자원을 반납하게 하는 것은 비선점 조건을 제거하는 방법이므로, 점유대기 제거로 설명한 것은 틀리다.
  • 시작 시점에 필요한 자원을 일괄 할당받는 것은 점유대기 조건을 제거하는 방법이므로, 비선점 제거로 설명한 것은 틀리다.
문제 8
순차 파일과 인덱스 순차 파일에 대한 설명으로 옳은 것의 총 개수는?
  • ㄱ. 순차 파일에서의 데이터 레코드 증가는 적용된 순차 기준으로 마지막 위치에서 이루어진다.
  • ㄴ. 순차 파일에서는 접근 조건으로 제시된 순차 대상 필드 값 범위에 해당하는 대량의 데이터 레코드들을 접근할 때 효과적이다.
  • ㄷ. 순차 파일에서의 데이터 레코드 증가는 오버플로 블록을 생성시키지 않는다.
  • ㄹ. 인덱스 순차 파일의 인덱스에는 인덱스 대상 필드 값과 그 값을 가지는 데이터 레코드를 접근할 수 있게 하는 위치 값이 기록된다.
  • ㅁ. 인덱스 순차 파일에서는 인덱스 갱신없이 데이터 레코드를 추가하거나 삭제하는 것이 가능하다.
  • ㅂ. 인덱스 순차 파일에서는 접근 조건에 해당하는 인덱스 대상 필드값을 가지는 소량의 데이터 레코드를 순차 파일보다 효과적으로 접근할 수 있다.
  • ㅅ. 인덱스를 다중레벨로 구성할 경우, 최하위 레벨은 순차 파일 형식으로 구성된다.
12개
23개
34개
45개
문제 9
Java 프로그램의 실행 결과로 옳은 것은?
public class B extends A {
int a = 20;
public B() {
System.out.print("다");
}
public B(int x) {
System.out.print("라");
}
}
public class A {
int a = 10;
public A() {
System.out.print("가");
}
public A(int x) {
System.out.print("나");
}
public static void main(String[] a) {
B b1 = new B();
A b2 = new B(1);
System.out.print(b1.a + b2.a);
}
}
1다라30
2다라40
3가다가라30
4가다가라40
정답 및 해설

실행 결과는 가다가라30이다.

하위 클래스 생성자는 첫 줄에서 상위 클래스의 기본 생성자 super()를 암묵적으로 호출한다. new B()는 "가" 다음 "다"를, new B(1)도 A(int)가 아닌 A()를 먼저 호출해 "가" 다음 "라"를 출력한다.

필드는 재정의되지 않고 참조 변수의 선언 타입으로 결정된다. b1(B형).a는 20, b2(A형).a는 10이므로 합은 30이다.

  • 다라30: 상위 클래스 생성자 A()가 먼저 실행되는 과정을 빠뜨린 결과다.
  • 다라40: 생성자 호출 순서와 필드 결정 규칙을 모두 잘못 적용한 결과다.
  • 가다가라40: b2.a를 실제 객체 B의 필드 20으로 본 결과로, 필드는 다형성이 적용되지 않는다.
문제 10
C 언어로 작성된 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>
double h(double *f, int d, double x) {
int i;
double res = 0.0;
for(i=d-1; i >= 0; i--) {
res = res * x + f[i];
}
return res;
}
int main() {
double f[] = {1, 2, 3, 4 };
printf("%3.1f \n", h(f, 4, 2));
return 0;
}
111.0
226.0
349.0
4112.0
정답 및 해설

출력 결과는 49.0이다.

함수 h는 호너(Horner) 방식으로 다항식 4x3+3x2+2x+14x^3+3x^2+2x+1의 값을 x=2에서 계산한다.

i=3: res = 0×2+4 = 4
i=2: res = 4×2+3 = 11
i=1: res = 11×2+2 = 24
i=0: res = 24×2+1 = 49
%3.1f 형식이므로 49.0이 출력된다.

  • 11.0: 반복을 두 번(i=3, i=2)만 수행했을 때의 중간값이다.
  • 26.0: 계수를 f[0]부터 높은 차수로 잘못 대응시킨 값(1·8+2·4+3·2+4)이다.
  • 112.0: 반복 횟수나 곱셈 순서를 잘못 추적한 값으로, 실제 계산과 맞지 않는다.
문제 11
(가), (나)에서 설명하는 악성 프로그램의 용어를 바르게 짝지은 것은? (순서대로 (가), (나))
  • (가) 사용자 컴퓨터의 데이터를 암호화시켜 파일을 사용할 수 없도록 한 후 암호화를 풀어주는 대가로 금전을 요구하는 악성 프로그램
  • (나) ‘○○○초대장’ 등의 내용을 담은 문자 메시지 내에 링크된 인터넷 주소를 클릭하면 악성 코드가 설치되어 사용자의 정보를 빼가거나 소액결제를 진행하는 악성 프로그램
1스파이웨어, 트로이목마
2랜섬웨어, 파밍(Pharming)
3스파이웨어, 피싱(Phishing)
4랜섬웨어, 스미싱(Smishing)
정답 및 해설

(가)는 랜섬웨어, (나)는 스미싱(Smishing)이다.

랜섬웨어는 파일을 암호화해 인질로 잡고 복호화 대가를 요구하며, 스미싱은 SMS와 피싱의 합성어로 문자 메시지 링크를 통해 악성 앱을 설치시켜 정보 탈취나 소액결제를 일으킨다.

  • 스파이웨어, 트로이목마: 스파이웨어는 몰래 정보를 수집할 뿐 파일을 암호화해 금전을 요구하지 않고, 트로이목마는 정상 프로그램으로 위장한 악성 코드로 문자 메시지 수법을 특정하지 않는다.
  • 랜섬웨어, 파밍: 파밍은 DNS나 hosts 파일을 변조해 정상 주소 입력 시에도 가짜 사이트로 유도하는 수법이다.
  • 스파이웨어, 피싱: 피싱은 주로 이메일·가짜 사이트로 개인정보를 낚는 수법이며, (가)도 스파이웨어가 아니다.
문제 12
다음에서 설명하는 디자인 패턴으로 옳은 것은?
1MVC pattern
2facade pattern
3mediator pattern
4bridge pattern
정답 및 해설

설명하는 디자인 패턴은 퍼사드(facade) 패턴이다.

퍼사드 패턴은 복잡한 서브시스템 앞에 하나의 창구 객체를 두어 단순화된 통합 인터페이스를 제공한다. 클라이언트는 서브시스템 내부를 몰라도 되므로 클래스 간 의존관계와 복잡성이 줄어든다.

  • MVC pattern: 모델·뷰·컨트롤러로 역할을 분리하는 아키텍처 패턴으로, 서브시스템 앞의 단일 창구 개념이 아니다.
  • mediator pattern: 여러 객체 간의 상호작용을 중재자 객체가 조정하는 행위 패턴으로, 클라이언트에게 서브시스템의 단순 인터페이스를 주는 목적과 다르다.
  • bridge pattern: 추상화와 구현을 분리해 각각 독립적으로 확장하게 하는 구조 패턴이다.
문제 13
SQL의 명령을 DDL, DML, DCL로 구분할 경우, 이를 바르게 짝지은 것은? (순서대로 DDL, DML, DCL)
1RENAME, SELECT, COMMIT
2UPDATE, SELECT, GRANT
3RENAME, ALTER, COMMIT
4UPDATE, ALTER, GRANT
정답 및 해설

DDL·DML·DCL 순서로 바르게 짝지은 것은 RENAME, SELECT, COMMIT이다.

DDL은 객체 구조를 정의·변경(CREATE·ALTER·DROP·RENAME), DML은 데이터를 조회·조작(SELECT·INSERT·UPDATE·DELETE), DCL은 권한·트랜잭션을 제어(GRANT·REVOKE·COMMIT·ROLLBACK)한다.

  • UPDATE, SELECT, GRANT: UPDATE는 데이터를 수정하는 DML이므로 DDL 자리에 맞지 않다.
  • RENAME, ALTER, COMMIT: ALTER는 테이블 구조를 변경하는 DDL이므로 DML 자리에 맞지 않다.
  • UPDATE, ALTER, GRANT: UPDATE는 DML, ALTER는 DDL이라 앞의 두 자리가 서로 뒤바뀌었다.
문제 14
㉠과 ㉡에 들어갈 용어로 바르게 짝지은 것은? (순서대로 ㉠, ㉡)

( ㉠ )은/는 구글에서 개발해서 공개한 인공지능 응용프로그램 개발용 오픈소스 프레임워크이다. 이 프레임워크를 사용할 때 인공지능 소프트웨어가 이미지 및 음성을 인식하기 위해서는 신경망의 ( ㉡ ) 모델을 주로 사용한다.
1텐서플로우, 논리곱 신경망
2알파고, 퍼셉트론
3노드레드, 인공 신경망
4텐서플로우, 합성곱 신경망
정답 및 해설

㉠은 텐서플로우(TensorFlow), ㉡은 합성곱 신경망(CNN)이다.

텐서플로우는 구글이 공개한 오픈소스 머신러닝 프레임워크이고, 합성곱 신경망은 합성곱 필터로 국소 특징을 추출해 이미지·음성 인식에 널리 쓰인다.

  • 텐서플로우, 논리곱 신경망: 이미지 인식에 쓰이는 대표 신경망 모델로 논리곱 신경망이라는 것은 없다.
  • 알파고, 퍼셉트론: 알파고는 바둑 인공지능 프로그램이지 개발용 프레임워크가 아니며, 퍼셉트론은 초기의 단층 신경망 모델이다.
  • 노드레드, 인공 신경망: 노드레드(Node-RED)는 IoT 장치 연결용 흐름 기반 개발 도구이며, 인공 신경망은 특정 모델이 아닌 포괄적 용어다.
문제 15
아래에 제시된 K-map(카르노 맵)을 NAND 게이트들로만 구성한 것으로 옳은 것은?
1
2
3
4
정답 및 해설

K-map을 간소화하면 F=bd+a‾ c‾ d‾+ab‾ c‾F = bd + \overline{a}\,\overline{c}\,\overline{d} + a\overline{b}\,\overline{c}이고, 이를 NAND-NAND 2단으로 구현한 회로가 정답이다.

1인 칸 중 b=1·d=1인 네 칸이 bd, ab=00·01의 cd=00 두 칸이 a‾ c‾ d‾\overline{a}\,\overline{c}\,\overline{d}, ab=10의 cd=00·01 두 칸이 ab‾ c‾a\overline{b}\,\overline{c}로 묶인다.

곱의 합(SOP)은 1단 NAND에 각 곱항의 입력을, 2단 NAND에 그 출력을 넣으면 그대로 구현된다. 따라서 첫 단 NAND 입력이 (a, b̄, c̄), (ā, c̄, d̄), (b, d)인 회로가 맞다.

  • 입력이 (a, b, d), (b, c, d̄), (ā, d)인 회로: abd·bcd̄·ād를 구현해 K-map의 0인 칸(예: ab=01, cd=10)을 1로 만든다.
  • 입력이 (a, b, c̄), (a, d̄), (b, d̄)인 회로: ad̄·bd̄ 항이 ab=11, cd=00처럼 0인 칸을 1로 만든다.
  • 입력이 (a, c, d), (b, c̄), (b̄, d)인 회로: b̄d 항이 ab=00, cd=01처럼 0인 칸을 1로 만든다.
문제 16
다음은 숫자를 처리하는 C 프로그램이다. 프로그램에서 ㉠과 ㉡에 들어갈 내용과 3 2 1 4를 입력하였을 때의 출력결과를 바르게 짝지은 것은? (단, 다음 프로그램에 문법적 오류는 없다고 가정한다.) (순서대로 ㉠, ㉡, 출력 결과)
#include <stdio.h>
#include <stdlib.h>
void a (int n, int *num) {
for (int i = 0; i < n; i++)
scanf("%d", &(num[i]));
}
void c(int *a, int *b) {
int t;
t = *a; *a = *b; *b = t;
}
void b(int n, int *lt) {
int a, b;
for (a = 0; a < n-1; a++)
for (b = a + 1; b < n; b++)
if (lt[a] > lt[b]) c ( ㉠ , ㉡ )
;
} int main() {
int n;
int *num;
printf("How many numbers?");
scanf("%d", &n);
num = (int *)malloc(sizeof(int) * n);
a(n, num);
b(n, num);
for (int i = 0; i < n; i++)
printf("%d ", num[i]);
}
1lt+a, lt+b, 1 2 3 4
2lt+a, lt+b, 1 2 4
3lt[a], lt[b], 4 3 2 1
4lt[a], lt[b], 4 2 1
정답 및 해설

㉠은 lt+a, ㉡은 lt+b이고 출력 결과는 1 2 4이다.

함수 c는 int 포인터 두 개를 받아 가리키는 값을 교환하므로, 배열 원소의 주소인 lt+a(=&lt[a])와 lt+b를 넘겨야 한다. 함수 b는 앞 원소가 더 크면 교환하는 선택 정렬 방식의 오름차순 정렬이다.

입력 3 2 1 4에서 첫 값 3은 개수 n으로 읽히고, 이어지는 2 1 4만 배열에 저장된다. 이를 오름차순 정렬하면 1 2 4가 출력된다.

  • lt+a, lt+b, 1 2 3 4: 첫 입력 3을 개수가 아닌 데이터로 본 결과다.
  • lt[a], lt[b], 4 3 2 1: lt[a]는 int 값이므로 포인터 매개변수에 넘길 수 없고, 정렬도 오름차순이다.
  • lt[a], lt[b], 4 2 1: 인자 형식이 맞지 않으며 정렬 방향도 반대다.
문제 17
엑셀 시트를 이용해 수식을 실행한 결과, 값이 나머지와 다른 것은?
A
13
27
35
43
50
61
1=GCD(A1,A6)
2=MEDIAN(A1:A6)
3=MODE(A1:A6)
4=POWER(A1,A6)
정답 및 해설

값이 나머지와 다른 수식은 =GCD(A1,A6)으로, 결과가 1이다. 나머지는 모두 3이다.

A1=3, A6=1이고, A1:A6은 3, 7, 5, 3, 0, 1이다. 3과 1의 최대공약수는 1이다.

  • =MEDIAN(A1:A6): 정렬하면 0, 1, 3, 3, 5, 7이고 짝수 개이므로 가운데 두 값 3과 3의 평균인 3이다.
  • =MODE(A1:A6): 가장 자주 나타나는 값(최빈값)은 두 번 나온 3이다.
  • =POWER(A1,A6): 3의 1제곱이므로 3이다.
문제 18
RISC(Reduced Instruction Set Computer)에 대한 설명으로 옳은 것의 총 개수는?
  • ㄱ. 칩 제작을 위한 R&D 비용이 감소한다.
  • ㄴ. 개별 명령어 디코딩 시간이 CISC(Complex Instruction Set Computer)보다 많이 소요된다.
  • ㄷ. 동일한 기능을 구현할 경우, CISC보다 적은 수의 레지스터가 필요하다.
  • ㄹ. 복잡한 연산을 수행하려면 명령어를 반복수행하여야 하므로 CISC의 경우보다 프로그램이 복잡해진다.
  • ㅁ. 각 명령어는 한 클럭에 실행하도록 고정되어 있어 파이프라인 성능을 향상시킬 수 있다.
  • ㅂ. 마이크로코드 설계가 어렵다.
  • ㅅ. 고정된 명령어이므로 명령어 디코딩 속도가 빠르다.
12개
23개
34개
45개
정답 및 해설

RISC에 대한 옳은 설명은 ㄱ, ㄹ, ㅁ, ㅅ으로 총 4개이다.

RISC는 단순·고정 길이 명령어를 하드와이어드 제어로 빠르게 해독하고 한 클럭 실행을 지향해 파이프라인에 유리하다. 설계가 단순해 칩 개발 비용이 줄지만, 복잡한 연산은 여러 명령어 조합으로 처리해야 해 프로그램이 길어진다.

  • ㄴ(틀림): 명령어 형식이 단순·고정되어 있어 디코딩 시간은 CISC보다 짧다.
  • ㄷ(틀림): 메모리 접근을 load/store로 제한하므로 CISC보다 많은 레지스터를 사용한다.
  • ㅂ(틀림): 마이크로코드 설계가 복잡한 것은 CISC의 특징이며, RISC는 주로 하드와이어드 제어를 쓴다.
문제 19
참조 무결성에 대한 설명으로 옳지 않은 것은?
1검색 연산의 수행 결과는 어떠한 참조 무결성 제약조건도 위배하지 않는다.
2참조하는 릴레이션에서 튜플이 삭제되는 경우, 참조 무결성 제약조건이 위배될 수 있다.
3외래 키 값은 참조되는 릴레이션의 어떤 튜플의 기본 키 값과 같거나 널(NULL) 값일 수 있다.
4참조 무결성 제약조건은 DBMS에 의하여 유지된다.
정답 및 해설

참조하는 릴레이션(외래 키를 가진 쪽)에서 튜플을 삭제해도 참조 무결성은 위배되지 않으므로 옳지 않은 설명이다.

참조 무결성이 깨질 수 있는 경우는 참조하는 릴레이션에 대한 삽입·외래 키 수정, 그리고 참조되는 릴레이션(기본 키 쪽)에 대한 삭제·기본 키 수정이다.

  • 검색 연산은 데이터를 변경하지 않으므로 어떤 무결성 제약조건도 위배하지 않는다.
  • 외래 키 값은 참조되는 릴레이션의 기본 키 값 중 하나이거나 널 값이어야 한다는 것이 참조 무결성의 정의이다.
  • 참조 무결성 제약조건은 DBMS가 연산 시 자동으로 검사·유지한다.
문제 20
프로세스(Process)와 쓰레드(Thread)에 대한 설명으로 옳지 않은 것은?
1프로세스 내 쓰레드 간 통신은 커널 개입을 필요로 하지 않기 때문에 프로세스 간 통신보다 더 효율적으로 이루어진다.
2멀티프로세서는 탑재 프로세서마다 쓰레드를 실행시킬 수 있기 때문에 프로세스의 처리율을 향상시킬 수 있다.
3한 프로세스 내의 모든 쓰레드들은 정적 영역(Static Area)을 공유한다.
4한 프로세스의 어떤 쓰레드가 스택 영역(Stack Area)에 있는 데이터 내용을 변경하면 해당 프로세스의 다른 쓰레드가 변경된 내용을 확인할 수 있다.
정답 및 해설

스택 영역은 쓰레드마다 따로 할당되므로, 한 쓰레드가 바꾼 스택 데이터를 다른 쓰레드가 확인할 수 있다는 설명은 옳지 않다.

같은 프로세스의 쓰레드들은 코드·데이터(정적)·힙 영역을 공유하고, 레지스터와 스택은 각자 독립적으로 가진다.

  • 쓰레드는 같은 주소 공간을 공유하므로 커널 개입 없이 통신할 수 있어 프로세스 간 통신보다 효율적이다.
  • 멀티프로세서에서는 각 프로세서가 쓰레드를 병렬로 실행할 수 있어 처리율이 향상된다.
  • 정적 영역(전역·정적 변수)은 프로세스 내 모든 쓰레드가 공유한다.
계리직 컴퓨터일반 기출문제모두CBT · moducbt.com
19년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
동기식 전송(Synchronous Transmission)에 대한 설명으로 옳지 않은 것은?
1정해진 숫자만큼의 문자열을 묶어 일시에 전송한다.
2작은 비트블록 앞뒤에 Start Bit와 Stop Bit를 삽입하여 비트블록을 동기화한다.
32,400bps 이상 속도의 전송과 원거리 전송에 이용된다.
4블록과 블록 사이에 유휴시간(Idle Time)이 없어 전송효율이 높다.
정답 및 해설

Start Bit와 Stop Bit를 문자마다 붙여 동기를 맞추는 것은 동기식이 아니라 비동기식 전송의 특징이므로 옳지 않다.

동기식 전송은 여러 문자를 하나의 블록(프레임)으로 묶고, 앞뒤에 동기 문자나 플래그를 두어 송수신 측이 클록을 맞춘 채 연속 전송한다.

  • 정해진 수의 문자열을 블록으로 묶어 한꺼번에 보내는 것은 동기식 전송의 기본 방식이다.
  • 고속(2,400bps 이상)·원거리 전송에 쓰인다는 설명은 동기식의 특징으로 옳다.
  • 블록 사이에 유휴시간이 없어 전송 효율이 높다는 설명도 동기식의 장점으로 옳다.
문제 2
어떤 프로젝트를 완성하기 위해 작업 분할(Work Breakdown)을 통해 파악된, 다음 소작업(activity) 목록을 AOE(Activity On Edge) 네트워크로 표현하였을 때, 이 프로젝트가 끝날 수 있는 가장 빠른 소요시간은?
소작업 이름소요시간선행 소작업
a5없음
b5없음
c8a, b
d2c
e3b, c
f4d
g5e, f
113
221
324
432
정답 및 해설

프로젝트가 끝날 수 있는 가장 빠른 소요시간은 임계 경로(critical path)의 길이인 24이다.

각 소작업의 가장 이른 완료 시각은 선행 작업 중 가장 늦게 끝나는 시각에 자기 소요시간을 더해 구한다.

a·b는 5에 끝나고, c는 5+8=13, d는 13+2=15, f는 15+4=19, e는 max(5, 13)+3=16이다.
g는 e(16)와 f(19) 중 늦은 19에 시작하므로 19+5=24에 끝난다.

  • 13: c까지만 끝난 시각으로, 뒤따르는 d·e·f·g가 남아 있다.
  • 21: 경로 a→c→e→g(5+8+3+5)의 길이로, 더 긴 경로 a→c→d→f→g를 놓친 값이다.
  • 32: 모든 소작업 시간을 단순 합산한 값으로, 병렬로 진행되는 작업을 고려하지 않았다.
문제 3
다음에 제시된 입력 데이터를 엑셀 서식의 표시 형식 코드에 따라 출력한 결과로 옳은 것은?
  • 입력 데이터 : 1234.5
  • 표시 형식 코드 : #,##0
11,234
21,235
31,234.5
41,234.50
정답 및 해설

출력 결과는 1,235이다.

표시 형식 코드 #,##0은 천 단위마다 쉼표를 넣고 소수 자릿수 없이 정수로 표시하며, 버려지는 소수부는 반올림된다. 따라서 1234.5는 1,235로 표시된다.

  • 1,234: 소수부를 반올림하지 않고 버린 결과로, 엑셀 표시 형식의 동작과 다르다.
  • 1,234.5: 소수 첫째 자리를 표시하려면 #,##0.0 형식이 필요하다.
  • 1,234.50: 소수 둘째 자리까지 표시하려면 #,##0.00 형식이 필요하다.
문제 4
객체지향 소프트웨어 개발 및 UML Diagram에 대한 설명이다. ㉠~㉢에 들어갈 내용을 바르게 짝지은 것은? (순서대로 ㉠, ㉡, ㉢)
  • ( ㉠ )은/는 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조로, 시스템 전체에 대한 큰 밑그림이다. 소프트웨어 품질 요구 사항은 ( ㉠ )을/를 결정하는 데 주요한 요소로 작용한다.
  • ( ㉡ )은/는 두 개 이상의 클래스에서 동일한 메시지에 대해 객체가 다르게 반응하는 것이다.
  • ( ㉢ )은/는 객체 간의 메시지 통신을 분석하기 위한 것으로 시스템의 동작을 정형화하고 객체들의 메시지 교환을 시각화한다.
1소프트웨어 아키텍처, 다형성, 시퀀스 모델
2유스케이스, 다형성, 시퀀스 모델
3클래스 다이어그램, 캡슐화, 상태 모델
4디자인 패턴, 캡슐화, 상태 모델
정답 및 해설

㉠은 소프트웨어 아키텍처, ㉡은 다형성, ㉢은 시퀀스 모델이다.

시스템 전체의 골격이자 품질 요구 사항에 따라 결정되는 구조는 아키텍처이고, 같은 메시지에 클래스마다 다르게 반응하는 성질은 다형성이며, 객체 간 메시지 교환을 시간 순서로 시각화하는 것은 시퀀스 다이어그램(모델)이다.

  • 유스케이스: 사용자 관점의 시스템 기능을 표현할 뿐, 시스템 전체의 구조적 골격을 뜻하지 않는다.
  • 클래스 다이어그램, 캡슐화, 상태 모델: 캡슐화는 데이터와 연산을 묶고 내부를 숨기는 개념이고, 상태 모델은 한 객체의 상태 변화를 표현하므로 ㉡·㉢에 맞지 않는다.
  • 디자인 패턴, 캡슐화, 상태 모델: 디자인 패턴은 반복되는 설계 문제의 재사용 해법으로 시스템 전체의 밑그림이 아니며, ㉡·㉢도 맞지 않는다.
문제 5
공개키 암호방식에 대한 설명으로 옳은 것은?
1송신자는 전송메시지에 대한 MAC(Message Authentication Code)을 생성하고 수신자는 그 MAC을 점검함으로써 메시지가 전송과정에서 변조되었는지 여부를 확인한다.
2송신자는 수신자의 개인키를 이용하여 암호화한 메시지를 송신하고 수신자는 수신한 메시지를 자신의 공개키를 이용하여 복호화한다.
3송수신자 규모가 동일할 경우, 공개키 암호방식이 대칭키 암호방식보다 더 많은 키들을 필요로 하기 때문에 인증기관이 키 관리를 담당한다.
4키 운영의 신뢰성을 공식적으로 제공하기 위하여 인증기관은 고객별로 개인키와 키 소유자 정보를 만들고 이를 해당 고객에게 인증서로 제공한다.
정답 및 해설

송신자가 만든 MAC을 수신자가 점검해 전송 중 변조 여부를 확인한다는 설명이 옳은 서술이다. MAC은 공개키 방식 고유의 기법은 아니지만 메시지 무결성 확인 방법으로서 서술 자체에 오류가 없다.

나머지 설명은 공개키 방식의 키 사용 방향, 필요한 키 개수, 개인키 관리 주체를 잘못 서술하고 있다. 공개키 방식에서는 수신자의 공개키로 암호화하고 수신자가 자신의 개인키로 복호화한다.

  • 수신자의 개인키로 암호화하고 공개키로 복호화한다는 설명은 키 사용 방향이 뒤바뀌었다.
  • 사용자 n명일 때 대칭키는 n(n−1)2\dfrac{n(n-1)}{2}개, 공개키는 2n2n개가 필요해 규모가 커질수록 대칭키 방식의 키 수가 훨씬 많아지므로, 공개키 방식이 더 많은 키를 필요로 한다는 설명은 틀리다.
  • 개인키는 사용자가 직접 생성·보관하며, 인증기관이 발급하는 인증서에는 공개키와 소유자 정보가 담기므로 인증기관이 개인키를 만들어 준다는 설명은 틀리다.
문제 6
온라인에서 멀티미디어 콘텐츠의 불법 유통을 방지하기 위해 삽입된 워터마킹 기술의 특성으로 옳지 않은 것은?
1부인 방지성
2비가시성
3강인성
4권리정보 추출성
정답 및 해설

부인 방지성은 전자서명 등 인증 기술이 제공하는 보안 서비스로, 워터마킹 기술의 특성이 아니다.

디지털 워터마킹은 콘텐츠에 저작권 정보를 숨겨 삽입하는 기술로, 비가시성으로 품질을 해치지 않으면서 강인성으로 공격에도 남아 있고 필요할 때 권리정보를 꺼낼 수 있어야 한다.

  • 비가시성: 삽입된 워터마크가 사람 눈이나 귀로 식별되지 않아 원본 품질을 유지해야 한다.
  • 강인성: 압축·필터링·자르기 등 변형이나 공격에도 워터마크가 제거되지 않아야 한다.
  • 권리정보 추출성: 분쟁 시 삽입된 저작권 정보를 정확히 추출해 소유권을 입증할 수 있어야 한다.
문제 7
프로세스 관리 과정에서 발생할 수 있는 교착상태(Deadlock)를 예방하기 위한 조치로 옳은 것은?
1상호배제(Mutual Exclusion) 조건을 제거하고자 할 경우, 프로세스 A가 점유하고 있던 자원에 대하여 프로세스 B로부터 할당 요청이 있을 때 프로세스 B에게도 해당자원을 할당하여 준다. 운영체제는 프로세스 A와 프로세스 B가 종료되는 시점에서 일관성을 점검하여 프로세스 A와 프로세스 B 중 하나를 철회시킨다.
2점유대기(Hold and Wait) 조건을 제거하고자 할 경우, 자원을 점유한 프로세스가 다른 자원을 요청하였지만 할당받지 못하면 일단 자신이 점유한 자원을 반납한다. 이후 그 프로세스는 반납하였던 자원과 요청하였던 자원을 함께 요청한다.
3비선점(No Preemption) 조건을 제거하고자 할 경우, 프로세스는 시작시점에서 자신이 사용할 모든 자원들에 대하여 일괄할당을 요청한다. 일괄할당이 이루어지지 않을 경우, 일괄할당이 이루어 지기까지 지연됨에 따른 성능저하가 발생할 수 있다.
4환형대기(Circular Wait) 조건을 제거하고자 할 경우, 자원들의 할당 순서를 정한다. 자원 Ri가 자원 Rk보다 먼저 할당되는 것으로 정하였을 경우, 프로세스 A가 Ri를 할당받은 후 Rk를 요청한 상태에서 프로세스 B가 Rk를 할당받은 후 Ri를 요청하면 교착상태가 발생하므로 운영체제는 프로세스 B의 자원요청을 거부한다.
정답 및 해설

환형대기 조건은 자원에 할당 순서를 정하고 그 순서대로만 요청하게 하여 제거하며, 순서를 어긴 요청은 거부한다는 설명이 옳다.

RiR_i를 RkR_k보다 먼저 할당하기로 정했다면, RkR_k를 가진 프로세스 B가 RiR_i를 요청하는 것은 순서 위반이므로 거부되어 순환 대기가 생기지 않는다.

  • 상호배제는 자원 고유의 성질이라 제거하기 어렵고, 점유 중인 자원을 다른 프로세스에도 동시에 할당한 뒤 나중에 철회하는 방식은 교착상태 예방 기법이 아니다.
  • 할당받지 못하면 점유한 자원을 반납하게 하는 것은 비선점 조건을 제거하는 방법이므로, 점유대기 제거로 설명한 것은 틀리다.
  • 시작 시점에 필요한 자원을 일괄 할당받는 것은 점유대기 조건을 제거하는 방법이므로, 비선점 제거로 설명한 것은 틀리다.
문제 8
순차 파일과 인덱스 순차 파일에 대한 설명으로 옳은 것의 총 개수는?
  • ㄱ. 순차 파일에서의 데이터 레코드 증가는 적용된 순차 기준으로 마지막 위치에서 이루어진다.
  • ㄴ. 순차 파일에서는 접근 조건으로 제시된 순차 대상 필드 값 범위에 해당하는 대량의 데이터 레코드들을 접근할 때 효과적이다.
  • ㄷ. 순차 파일에서의 데이터 레코드 증가는 오버플로 블록을 생성시키지 않는다.
  • ㄹ. 인덱스 순차 파일의 인덱스에는 인덱스 대상 필드 값과 그 값을 가지는 데이터 레코드를 접근할 수 있게 하는 위치 값이 기록된다.
  • ㅁ. 인덱스 순차 파일에서는 인덱스 갱신없이 데이터 레코드를 추가하거나 삭제하는 것이 가능하다.
  • ㅂ. 인덱스 순차 파일에서는 접근 조건에 해당하는 인덱스 대상 필드값을 가지는 소량의 데이터 레코드를 순차 파일보다 효과적으로 접근할 수 있다.
  • ㅅ. 인덱스를 다중레벨로 구성할 경우, 최하위 레벨은 순차 파일 형식으로 구성된다.
12개
23개
34개
45개
문제 9
Java 프로그램의 실행 결과로 옳은 것은?
public class B extends A {
int a = 20;
public B() {
System.out.print("다");
}
public B(int x) {
System.out.print("라");
}
}
public class A {
int a = 10;
public A() {
System.out.print("가");
}
public A(int x) {
System.out.print("나");
}
public static void main(String[] a) {
B b1 = new B();
A b2 = new B(1);
System.out.print(b1.a + b2.a);
}
}
1다라30
2다라40
3가다가라30
4가다가라40
정답 및 해설

실행 결과는 가다가라30이다.

하위 클래스 생성자는 첫 줄에서 상위 클래스의 기본 생성자 super()를 암묵적으로 호출한다. new B()는 "가" 다음 "다"를, new B(1)도 A(int)가 아닌 A()를 먼저 호출해 "가" 다음 "라"를 출력한다.

필드는 재정의되지 않고 참조 변수의 선언 타입으로 결정된다. b1(B형).a는 20, b2(A형).a는 10이므로 합은 30이다.

  • 다라30: 상위 클래스 생성자 A()가 먼저 실행되는 과정을 빠뜨린 결과다.
  • 다라40: 생성자 호출 순서와 필드 결정 규칙을 모두 잘못 적용한 결과다.
  • 가다가라40: b2.a를 실제 객체 B의 필드 20으로 본 결과로, 필드는 다형성이 적용되지 않는다.
문제 10
C 언어로 작성된 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>
double h(double *f, int d, double x) {
int i;
double res = 0.0;
for(i=d-1; i >= 0; i--) {
res = res * x + f[i];
}
return res;
}
int main() {
double f[] = {1, 2, 3, 4 };
printf("%3.1f \n", h(f, 4, 2));
return 0;
}
111.0
226.0
349.0
4112.0
정답 및 해설

출력 결과는 49.0이다.

함수 h는 호너(Horner) 방식으로 다항식 4x3+3x2+2x+14x^3+3x^2+2x+1의 값을 x=2에서 계산한다.

i=3: res = 0×2+4 = 4
i=2: res = 4×2+3 = 11
i=1: res = 11×2+2 = 24
i=0: res = 24×2+1 = 49
%3.1f 형식이므로 49.0이 출력된다.

  • 11.0: 반복을 두 번(i=3, i=2)만 수행했을 때의 중간값이다.
  • 26.0: 계수를 f[0]부터 높은 차수로 잘못 대응시킨 값(1·8+2·4+3·2+4)이다.
  • 112.0: 반복 횟수나 곱셈 순서를 잘못 추적한 값으로, 실제 계산과 맞지 않는다.
문제 11
(가), (나)에서 설명하는 악성 프로그램의 용어를 바르게 짝지은 것은? (순서대로 (가), (나))
  • (가) 사용자 컴퓨터의 데이터를 암호화시켜 파일을 사용할 수 없도록 한 후 암호화를 풀어주는 대가로 금전을 요구하는 악성 프로그램
  • (나) ‘○○○초대장’ 등의 내용을 담은 문자 메시지 내에 링크된 인터넷 주소를 클릭하면 악성 코드가 설치되어 사용자의 정보를 빼가거나 소액결제를 진행하는 악성 프로그램
1스파이웨어, 트로이목마
2랜섬웨어, 파밍(Pharming)
3스파이웨어, 피싱(Phishing)
4랜섬웨어, 스미싱(Smishing)
정답 및 해설

(가)는 랜섬웨어, (나)는 스미싱(Smishing)이다.

랜섬웨어는 파일을 암호화해 인질로 잡고 복호화 대가를 요구하며, 스미싱은 SMS와 피싱의 합성어로 문자 메시지 링크를 통해 악성 앱을 설치시켜 정보 탈취나 소액결제를 일으킨다.

  • 스파이웨어, 트로이목마: 스파이웨어는 몰래 정보를 수집할 뿐 파일을 암호화해 금전을 요구하지 않고, 트로이목마는 정상 프로그램으로 위장한 악성 코드로 문자 메시지 수법을 특정하지 않는다.
  • 랜섬웨어, 파밍: 파밍은 DNS나 hosts 파일을 변조해 정상 주소 입력 시에도 가짜 사이트로 유도하는 수법이다.
  • 스파이웨어, 피싱: 피싱은 주로 이메일·가짜 사이트로 개인정보를 낚는 수법이며, (가)도 스파이웨어가 아니다.
문제 12
다음에서 설명하는 디자인 패턴으로 옳은 것은?
1MVC pattern
2facade pattern
3mediator pattern
4bridge pattern
정답 및 해설

설명하는 디자인 패턴은 퍼사드(facade) 패턴이다.

퍼사드 패턴은 복잡한 서브시스템 앞에 하나의 창구 객체를 두어 단순화된 통합 인터페이스를 제공한다. 클라이언트는 서브시스템 내부를 몰라도 되므로 클래스 간 의존관계와 복잡성이 줄어든다.

  • MVC pattern: 모델·뷰·컨트롤러로 역할을 분리하는 아키텍처 패턴으로, 서브시스템 앞의 단일 창구 개념이 아니다.
  • mediator pattern: 여러 객체 간의 상호작용을 중재자 객체가 조정하는 행위 패턴으로, 클라이언트에게 서브시스템의 단순 인터페이스를 주는 목적과 다르다.
  • bridge pattern: 추상화와 구현을 분리해 각각 독립적으로 확장하게 하는 구조 패턴이다.
문제 13
SQL의 명령을 DDL, DML, DCL로 구분할 경우, 이를 바르게 짝지은 것은? (순서대로 DDL, DML, DCL)
1RENAME, SELECT, COMMIT
2UPDATE, SELECT, GRANT
3RENAME, ALTER, COMMIT
4UPDATE, ALTER, GRANT
정답 및 해설

DDL·DML·DCL 순서로 바르게 짝지은 것은 RENAME, SELECT, COMMIT이다.

DDL은 객체 구조를 정의·변경(CREATE·ALTER·DROP·RENAME), DML은 데이터를 조회·조작(SELECT·INSERT·UPDATE·DELETE), DCL은 권한·트랜잭션을 제어(GRANT·REVOKE·COMMIT·ROLLBACK)한다.

  • UPDATE, SELECT, GRANT: UPDATE는 데이터를 수정하는 DML이므로 DDL 자리에 맞지 않다.
  • RENAME, ALTER, COMMIT: ALTER는 테이블 구조를 변경하는 DDL이므로 DML 자리에 맞지 않다.
  • UPDATE, ALTER, GRANT: UPDATE는 DML, ALTER는 DDL이라 앞의 두 자리가 서로 뒤바뀌었다.
문제 14
㉠과 ㉡에 들어갈 용어로 바르게 짝지은 것은? (순서대로 ㉠, ㉡)

( ㉠ )은/는 구글에서 개발해서 공개한 인공지능 응용프로그램 개발용 오픈소스 프레임워크이다. 이 프레임워크를 사용할 때 인공지능 소프트웨어가 이미지 및 음성을 인식하기 위해서는 신경망의 ( ㉡ ) 모델을 주로 사용한다.
1텐서플로우, 논리곱 신경망
2알파고, 퍼셉트론
3노드레드, 인공 신경망
4텐서플로우, 합성곱 신경망
정답 및 해설

㉠은 텐서플로우(TensorFlow), ㉡은 합성곱 신경망(CNN)이다.

텐서플로우는 구글이 공개한 오픈소스 머신러닝 프레임워크이고, 합성곱 신경망은 합성곱 필터로 국소 특징을 추출해 이미지·음성 인식에 널리 쓰인다.

  • 텐서플로우, 논리곱 신경망: 이미지 인식에 쓰이는 대표 신경망 모델로 논리곱 신경망이라는 것은 없다.
  • 알파고, 퍼셉트론: 알파고는 바둑 인공지능 프로그램이지 개발용 프레임워크가 아니며, 퍼셉트론은 초기의 단층 신경망 모델이다.
  • 노드레드, 인공 신경망: 노드레드(Node-RED)는 IoT 장치 연결용 흐름 기반 개발 도구이며, 인공 신경망은 특정 모델이 아닌 포괄적 용어다.
문제 15
아래에 제시된 K-map(카르노 맵)을 NAND 게이트들로만 구성한 것으로 옳은 것은?
1
2
3
4
정답 및 해설

K-map을 간소화하면 F=bd+a‾ c‾ d‾+ab‾ c‾F = bd + \overline{a}\,\overline{c}\,\overline{d} + a\overline{b}\,\overline{c}이고, 이를 NAND-NAND 2단으로 구현한 회로가 정답이다.

1인 칸 중 b=1·d=1인 네 칸이 bd, ab=00·01의 cd=00 두 칸이 a‾ c‾ d‾\overline{a}\,\overline{c}\,\overline{d}, ab=10의 cd=00·01 두 칸이 ab‾ c‾a\overline{b}\,\overline{c}로 묶인다.

곱의 합(SOP)은 1단 NAND에 각 곱항의 입력을, 2단 NAND에 그 출력을 넣으면 그대로 구현된다. 따라서 첫 단 NAND 입력이 (a, b̄, c̄), (ā, c̄, d̄), (b, d)인 회로가 맞다.

  • 입력이 (a, b, d), (b, c, d̄), (ā, d)인 회로: abd·bcd̄·ād를 구현해 K-map의 0인 칸(예: ab=01, cd=10)을 1로 만든다.
  • 입력이 (a, b, c̄), (a, d̄), (b, d̄)인 회로: ad̄·bd̄ 항이 ab=11, cd=00처럼 0인 칸을 1로 만든다.
  • 입력이 (a, c, d), (b, c̄), (b̄, d)인 회로: b̄d 항이 ab=00, cd=01처럼 0인 칸을 1로 만든다.
문제 16
다음은 숫자를 처리하는 C 프로그램이다. 프로그램에서 ㉠과 ㉡에 들어갈 내용과 3 2 1 4를 입력하였을 때의 출력결과를 바르게 짝지은 것은? (단, 다음 프로그램에 문법적 오류는 없다고 가정한다.) (순서대로 ㉠, ㉡, 출력 결과)
#include <stdio.h>
#include <stdlib.h>
void a (int n, int *num) {
for (int i = 0; i < n; i++)
scanf("%d", &(num[i]));
}
void c(int *a, int *b) {
int t;
t = *a; *a = *b; *b = t;
}
void b(int n, int *lt) {
int a, b;
for (a = 0; a < n-1; a++)
for (b = a + 1; b < n; b++)
if (lt[a] > lt[b]) c ( ㉠ , ㉡ )
;
} int main() {
int n;
int *num;
printf("How many numbers?");
scanf("%d", &n);
num = (int *)malloc(sizeof(int) * n);
a(n, num);
b(n, num);
for (int i = 0; i < n; i++)
printf("%d ", num[i]);
}
1lt+a, lt+b, 1 2 3 4
2lt+a, lt+b, 1 2 4
3lt[a], lt[b], 4 3 2 1
4lt[a], lt[b], 4 2 1
정답 및 해설

㉠은 lt+a, ㉡은 lt+b이고 출력 결과는 1 2 4이다.

함수 c는 int 포인터 두 개를 받아 가리키는 값을 교환하므로, 배열 원소의 주소인 lt+a(=&lt[a])와 lt+b를 넘겨야 한다. 함수 b는 앞 원소가 더 크면 교환하는 선택 정렬 방식의 오름차순 정렬이다.

입력 3 2 1 4에서 첫 값 3은 개수 n으로 읽히고, 이어지는 2 1 4만 배열에 저장된다. 이를 오름차순 정렬하면 1 2 4가 출력된다.

  • lt+a, lt+b, 1 2 3 4: 첫 입력 3을 개수가 아닌 데이터로 본 결과다.
  • lt[a], lt[b], 4 3 2 1: lt[a]는 int 값이므로 포인터 매개변수에 넘길 수 없고, 정렬도 오름차순이다.
  • lt[a], lt[b], 4 2 1: 인자 형식이 맞지 않으며 정렬 방향도 반대다.
문제 17
엑셀 시트를 이용해 수식을 실행한 결과, 값이 나머지와 다른 것은?
A
13
27
35
43
50
61
1=GCD(A1,A6)
2=MEDIAN(A1:A6)
3=MODE(A1:A6)
4=POWER(A1,A6)
정답 및 해설

값이 나머지와 다른 수식은 =GCD(A1,A6)으로, 결과가 1이다. 나머지는 모두 3이다.

A1=3, A6=1이고, A1:A6은 3, 7, 5, 3, 0, 1이다. 3과 1의 최대공약수는 1이다.

  • =MEDIAN(A1:A6): 정렬하면 0, 1, 3, 3, 5, 7이고 짝수 개이므로 가운데 두 값 3과 3의 평균인 3이다.
  • =MODE(A1:A6): 가장 자주 나타나는 값(최빈값)은 두 번 나온 3이다.
  • =POWER(A1,A6): 3의 1제곱이므로 3이다.
문제 18
RISC(Reduced Instruction Set Computer)에 대한 설명으로 옳은 것의 총 개수는?
  • ㄱ. 칩 제작을 위한 R&D 비용이 감소한다.
  • ㄴ. 개별 명령어 디코딩 시간이 CISC(Complex Instruction Set Computer)보다 많이 소요된다.
  • ㄷ. 동일한 기능을 구현할 경우, CISC보다 적은 수의 레지스터가 필요하다.
  • ㄹ. 복잡한 연산을 수행하려면 명령어를 반복수행하여야 하므로 CISC의 경우보다 프로그램이 복잡해진다.
  • ㅁ. 각 명령어는 한 클럭에 실행하도록 고정되어 있어 파이프라인 성능을 향상시킬 수 있다.
  • ㅂ. 마이크로코드 설계가 어렵다.
  • ㅅ. 고정된 명령어이므로 명령어 디코딩 속도가 빠르다.
12개
23개
34개
45개
정답 및 해설

RISC에 대한 옳은 설명은 ㄱ, ㄹ, ㅁ, ㅅ으로 총 4개이다.

RISC는 단순·고정 길이 명령어를 하드와이어드 제어로 빠르게 해독하고 한 클럭 실행을 지향해 파이프라인에 유리하다. 설계가 단순해 칩 개발 비용이 줄지만, 복잡한 연산은 여러 명령어 조합으로 처리해야 해 프로그램이 길어진다.

  • ㄴ(틀림): 명령어 형식이 단순·고정되어 있어 디코딩 시간은 CISC보다 짧다.
  • ㄷ(틀림): 메모리 접근을 load/store로 제한하므로 CISC보다 많은 레지스터를 사용한다.
  • ㅂ(틀림): 마이크로코드 설계가 복잡한 것은 CISC의 특징이며, RISC는 주로 하드와이어드 제어를 쓴다.
문제 19
참조 무결성에 대한 설명으로 옳지 않은 것은?
1검색 연산의 수행 결과는 어떠한 참조 무결성 제약조건도 위배하지 않는다.
2참조하는 릴레이션에서 튜플이 삭제되는 경우, 참조 무결성 제약조건이 위배될 수 있다.
3외래 키 값은 참조되는 릴레이션의 어떤 튜플의 기본 키 값과 같거나 널(NULL) 값일 수 있다.
4참조 무결성 제약조건은 DBMS에 의하여 유지된다.
정답 및 해설

참조하는 릴레이션(외래 키를 가진 쪽)에서 튜플을 삭제해도 참조 무결성은 위배되지 않으므로 옳지 않은 설명이다.

참조 무결성이 깨질 수 있는 경우는 참조하는 릴레이션에 대한 삽입·외래 키 수정, 그리고 참조되는 릴레이션(기본 키 쪽)에 대한 삭제·기본 키 수정이다.

  • 검색 연산은 데이터를 변경하지 않으므로 어떤 무결성 제약조건도 위배하지 않는다.
  • 외래 키 값은 참조되는 릴레이션의 기본 키 값 중 하나이거나 널 값이어야 한다는 것이 참조 무결성의 정의이다.
  • 참조 무결성 제약조건은 DBMS가 연산 시 자동으로 검사·유지한다.
문제 20
프로세스(Process)와 쓰레드(Thread)에 대한 설명으로 옳지 않은 것은?
1프로세스 내 쓰레드 간 통신은 커널 개입을 필요로 하지 않기 때문에 프로세스 간 통신보다 더 효율적으로 이루어진다.
2멀티프로세서는 탑재 프로세서마다 쓰레드를 실행시킬 수 있기 때문에 프로세스의 처리율을 향상시킬 수 있다.
3한 프로세스 내의 모든 쓰레드들은 정적 영역(Static Area)을 공유한다.
4한 프로세스의 어떤 쓰레드가 스택 영역(Stack Area)에 있는 데이터 내용을 변경하면 해당 프로세스의 다른 쓰레드가 변경된 내용을 확인할 수 있다.
정답 및 해설

스택 영역은 쓰레드마다 따로 할당되므로, 한 쓰레드가 바꾼 스택 데이터를 다른 쓰레드가 확인할 수 있다는 설명은 옳지 않다.

같은 프로세스의 쓰레드들은 코드·데이터(정적)·힙 영역을 공유하고, 레지스터와 스택은 각자 독립적으로 가진다.

  • 쓰레드는 같은 주소 공간을 공유하므로 커널 개입 없이 통신할 수 있어 프로세스 간 통신보다 효율적이다.
  • 멀티프로세서에서는 각 프로세서가 쓰레드를 병렬로 실행할 수 있어 처리율이 향상된다.
  • 정적 영역(전역·정적 변수)은 프로세스 내 모든 쓰레드가 공유한다.