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

21년 1회차

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

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

21년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
컴퓨팅 사고(Computational Thinking)에서 주어진 문제의 중요한 특징만으로 문제를 간결하게 재정의함으로써 문제 해결을 쉽게 하는 과정은?
1분해
2알고리즘
3추상화
4패턴 인식
정답 및 해설

문제의 중요한 특징만 남기고 불필요한 세부를 제거해 간결하게 재정의하는 과정은 추상화이다.

컴퓨팅 사고는 분해·패턴 인식·추상화·알고리즘의 네 요소로 설명되며, 핵심만 뽑아 모델로 단순화하는 단계가 추상화에 해당한다.

  • 분해: 복잡한 문제를 작고 다루기 쉬운 하위 문제로 나누는 과정이다.
  • 패턴 인식: 문제 안이나 문제들 사이에서 반복되는 유사성·규칙을 찾는 과정이다.
  • 알고리즘: 문제를 해결하는 단계적 절차를 설계하는 과정이다.
문제 2
소프트웨어에 대한 설명으로 옳지 않은 것은?
1하드웨어에 대응하는 개념으로 우리가 원하는 대로 컴퓨터를 작동하게 만드는 논리적인 바탕을 제공한다.
2운영체제 등 컴퓨터 시스템을 가동시키는 데 사용되는 소프트웨어를 시스템 소프트웨어라 한다.
3문서 작성이나 게임 등 특정 분야의 업무를 처리하는 데 사용되는 소프트웨어를 응용 소프트웨어라 한다.
4고급 언어로 작성된 프로그램을 한꺼번에 번역한 후 실행하는 것이 인터프리터 방식이다.
정답 및 해설

고급 언어 프로그램을 한꺼번에 번역한 뒤 실행하는 것은 컴파일러 방식이므로, 이를 인터프리터 방식이라 한 설명이 옳지 않다.

인터프리터는 원시 프로그램을 한 줄(문장) 단위로 번역하면서 곧바로 실행하며, 목적 프로그램을 따로 만들지 않는다.

  • 소프트웨어는 하드웨어에 대응하는 개념으로, 컴퓨터를 원하는 대로 동작시키는 논리적 바탕이다.
  • 운영체제처럼 컴퓨터 시스템을 가동·관리하는 소프트웨어는 시스템 소프트웨어이다.
  • 문서 작성·게임처럼 특정 업무를 처리하는 소프트웨어는 응용 소프트웨어이다.
문제 3
4GHz의 클록 속도를 갖는 CPU에서 CPI(Cycle per Instruction)가 4.0이고 총 1010개의 명령어로 구성된 프로그램을 수행하려고 할 때, 이 프로그램의 실행 완료를 위해 필요한 시간은?
11초
210초
3100초
41,000초
정답 및 해설

프로그램 실행 시간은 10초이다.

CPU 실행 시간 = 명령어 수 × CPI ÷ 클록 속도
T=1010×4.04×109 HzT = \dfrac{10^{10} \times 4.0}{4 \times 10^{9}\,\mathrm{Hz}}

분자 4×10104 \times 10^{10} 사이클을 초당 4×1094 \times 10^{9} 사이클로 나누면 T=10 sT = 10\,\mathrm{s}로, 클록 사이클 총수 ÷ 클록 속도가 실행 시간이 된다.

문제 4
-35를 2의 보수(2's Complement)로 변환하면?
111011100
211011101
311101100
411101101
정답 및 해설

-35의 8비트 2의 보수 표현은 11011101이다.

35를 2진수로 쓰면 00100011이다.
모든 비트를 반전(1의 보수)하면 11011100이다.
여기에 1을 더하면 11011101이 된다.

  • 11011100은 1을 더하기 전 값, 즉 35의 1의 보수이다.
  • 11101100은 2의 보수로 해석하면 -20이므로 -35가 아니다.
  • 11101101은 2의 보수로 해석하면 -19이므로 -35가 아니다.
문제 5
OSI 7계층에서 계층별로 사용하는 프로토콜의 데이터 단위는 다음 표와 같다. ㉠~㉢에 들어갈 내용을 바르게 연결한 것은?
계층데이터 단위
트랜스포트(Transport) 계층( ㉠ )
네트워크(Network) 계층( ㉡ )
데이터링크(Datalink) 계층( ㉢ )
물리(Physical) 계층비트
㉠㉡㉢
①세그먼트프레임패킷
②패킷세그먼트프레임
③세그먼트패킷프레임
④패킷프레임세그먼트
1①
2②
3③
4④
정답 및 해설

㉠ 트랜스포트 계층은 세그먼트, ㉡ 네트워크 계층은 패킷, ㉢ 데이터링크 계층은 프레임이다.

캡슐화가 진행되며 상위 데이터에 TCP 헤더가 붙으면 세그먼트, IP 헤더가 붙으면 패킷, 데이터링크 헤더·트레일러가 붙으면 프레임이 되고 물리 계층에서 비트로 전송된다.

  • 세그먼트·프레임·패킷 조합은 네트워크 계층과 데이터링크 계층의 단위가 서로 뒤바뀌었다.
  • 패킷·세그먼트·프레임 조합은 트랜스포트 계층과 네트워크 계층의 단위가 뒤바뀌었다.
  • 패킷·프레임·세그먼트 조합은 세 계층 모두 단위가 맞지 않는다.
문제 6
300개의 노드로 이진 트리를 생성하고자 할 때, 생성 가능한 이진 트리의 최대 높이와 최소 높이로 모두 옳은 것은? (단, 1개의 노드로 생성된 이진 트리의 높이는 1이다)
최대 높이최소 높이
①2998
②2999
③3008
④3009
1①
2②
3③
4④
정답 및 해설

노드 300개로 만들 수 있는 이진 트리의 최대 높이는 300, 최소 높이는 9이다.

최대 높이: 모든 노드가 한쪽 자식으로만 이어진 편향 트리이면 노드마다 한 층씩 차지하므로 높이 300이다.

최소 높이: 높이 h인 포화 이진 트리의 노드 수는 2h−12^{h}-1이다. 28−1=255<300≤29−1=5112^{8}-1 = 255 < 300 \le 2^{9}-1 = 511이므로 h = 9가 필요하다.

  • 최대 299·최소 8: 편향 트리의 높이는 노드 수와 같은 300이고, 높이 8로는 최대 255개 노드만 담을 수 있어 둘 다 틀리다.
  • 최대 299·최소 9: 최소 높이는 맞지만, 편향 트리의 최대 높이는 299가 아니라 300이다.
  • 최대 300·최소 8: 최대 높이는 맞지만, 높이 8의 이진 트리는 최대 255개 노드만 담을 수 있어 300개를 수용하지 못한다.
문제 7
아래와 같은 순서대로 회의실 사용 요청이 있을 때, 다음 중 가장 많은 회의실 사용 시간을 확보할 수 있는 스케줄링 방법은? (단, 회의실은 하나이고, 사용 요청은 (시작 시각, 종료 시각)으로 구성된다. 회의실에 특정 회의가 할당되면 이 회의 시간과 겹치는 회의 요청에 대해서는 회의실 배정을 할 수 없다)
(11:50, 12:30),  (9:00, 12:00),  (13:00, 14:30),
(14:40, 15:00),  (14:50, 16:00),  (15:40, 16:20),
(16:10, 18:00)
1시작 시각이 빠른 요청부터 회의실 사용이 가능하면 확정한다.
2종료 시각이 빠른 요청부터 회의실 사용이 가능하면 확정한다.
3사용 요청 순서대로 회의실 사용이 가능하면 확정한다.
4회의 시간이 긴 요청부터 회의실 사용이 가능하면 확정한다.
정답 및 해설

각 방법을 적용해 보면 회의 시간이 긴 요청부터 확정할 때 사용 시간이 450분으로 가장 많다.

긴 순서로 9:00~12:00(180분), 16:10~18:00(110분), 13:00~14:30(90분), 14:50~16:00(70분)을 확정하고, 남은 요청은 모두 겹치므로 합계 450분이다.

  • 시작 시각이 빠른 순: 9:00~12:00, 13:00~14:30, 14:40~15:00, 15:40~16:20이 확정되어 330분이다.
  • 종료 시각이 빠른 순: 같은 네 회의가 확정되어 330분이다(회의 개수는 최대이나 시간 합은 아니다).
  • 요청 순서대로: 11:50~12:30, 13:00~14:30, 14:40~15:00, 15:40~16:20이 확정되어 190분이다.
문제 8
제품 테이블에 대하여 SQL 명령을 실행한 결과가 다음과 같을 때, ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은?

<제품 테이블>

제품ID제품이름단가제조업체
P001나사못100A
P010망치1,000B
P011드라이버3,000B
P020망치1,500C
P021장갑800C
P022너트200C
P030드라이버4,000D
P031절연테이프500D
<SQL 명령>
SELECT 제조업체, MAX(단가) AS 최고단가
FROM 제품
GROUP BY ( ㉠ )
HAVING COUNT(*) > ( ㉡ );

<실행 결과>

제조업체최고단가
B3,000
C1,500
D4,000
㉠㉡
①제조업체1
②제조업체2
③단가1
④단가2
1①
2②
3③
4④
정답 및 해설

㉠에는 제조업체, ㉡에는 1이 들어간다.

결과가 제조업체별 최고단가이므로 제조업체로 그룹화해야 한다. 업체별 제품 수는 A 1개, B 2개, C 3개, D 2개이고, 결과에 A만 빠졌으므로 HAVING 조건은 COUNT(*) > 1이다.

  • 제조업체·2 조합: 제품이 2개를 초과하는 C만 남아 결과와 다르다.
  • 단가·1 조합: 단가가 모두 달라 단가별 그룹은 각각 1건이므로 COUNT(*) > 1을 만족하는 그룹이 없고, SELECT의 제조업체도 그룹 기준이 아니다.
  • 단가·2 조합: 마찬가지로 단가별 그룹이 모두 1건이라 조건을 만족하는 그룹이 없어 결과와 다르다.
문제 9
스택의 입력으로 4개의 문자 D, C, B, A가 순서대로 들어올 때, 스택 연산 PUSH와 POP에 의해서 출력될 수 없는 결과는?
1ABCD
2BDCA
3CDBA
4DCBA
정답 및 해설

D, C, B, A 순으로 입력될 때 BDCA는 출력될 수 없다.

B를 먼저 출력하려면 D, C, B를 차례로 PUSH한 뒤 B를 POP해야 하고, 이때 스택 top에는 C가 있다. 따라서 다음 출력은 C나 새로 넣는 A여야 하며 C 아래 묻힌 D가 먼저 나올 수 없다.

  • ABCD: 네 문자를 모두 PUSH한 뒤 연속으로 POP하면 A, B, C, D 순으로 나온다.
  • CDBA: D, C를 PUSH하고 C, D를 POP한 뒤, B와 A를 각각 PUSH 직후 POP하면 된다.
  • DCBA: 각 문자를 PUSH하자마자 POP하면 입력 순서 그대로 나온다.
문제 10
임계구역에 대한 설명으로 옳은 것은?
1임계구역에 진입하고자 하는 프로세스가 무한대기에 빠지지 않도록 하는 조건을 진행의 융통성(Progress Flexibility)이라 한다.
2자원을 공유하는 프로세스들 사이에서 공유자원에 대해 동시에 접근하여 변경할 수 있는 프로그램 코드 부분을 임계영역(Critical Section)이라 한다.
3한 프로세스가 다른 프로세스의 진행을 방해하지 않도록 하는 조건을 한정 대기(Bounded Waiting)라 한다.
4한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없도록 하는 조건을 상호 배제(Mutual Exclusion)라 한다.
정답 및 해설

한 프로세스가 임계구역에 있으면 다른 프로세스가 들어갈 수 없게 하는 조건은 상호 배제이므로 이 설명이 옳다.

임계구역 문제의 해결 조건은 상호 배제, 진행(Progress), 한정 대기(Bounded Waiting)의 세 가지이다.

  • 진입하려는 프로세스가 무한대기에 빠지지 않게 하는 조건은 한정 대기이며, 진행의 융통성이라 한 것은 틀리다.
  • 임계구역은 공유자원에 접근하는 코드 부분으로, 여러 프로세스가 동시에 접근해 변경하지 못하도록 보호해야 하는 영역이다.
  • 임계구역 밖의 프로세스가 다른 프로세스의 진입을 방해하지 않게 하는 조건은 진행이며, 한정 대기가 아니다.
문제 11
통합 테스팅 방법에 대한 설명으로 옳지 않은 것은?
1연쇄식(Threads) 통합은 초기에 시스템 골격을 파악하기 어렵다.
2빅뱅(Big-bang) 통합은 모든 모듈을 동시에 통합하여 테스팅한다.
3상향식(Bottom-up) 통합은 가장 하부 모듈부터 통합하여 테스팅한다.
4하향식(Top-down) 통합은 프로그램 제어 구조에서 상위 모듈부터 통합하는 것을 말한다.
정답 및 해설

연쇄식(Threads) 통합은 핵심 기능 흐름을 먼저 연결하므로 초기에 시스템 골격을 파악할 수 있다. 따라서 파악하기 어렵다는 설명이 옳지 않다.

연쇄식 통합은 특정 기능을 수행하는 모듈들의 실행 경로(스레드)를 단위로 통합해 나가는 방식으로, 중요한 기능이 일찍 동작하는 형태로 드러난다.

  • 빅뱅 통합은 모든 모듈을 한 번에 결합해 테스트한다.
  • 상향식 통합은 최하위 모듈부터 결합하며 드라이버를 사용한다.
  • 하향식 통합은 제어 구조의 최상위 모듈부터 결합하며 스텁을 사용한다.
문제 12
다음 중 파이썬 프로그래밍 언어에 대한 설명으로 옳은 것만을 모두 고르면?

ㄱ. 변수 선언 시 변수명 앞에 데이터형을 지정해야 한다.
ㄴ. 플랫폼에 독립적인 대화식 언어이다.
ㄷ. 클래스를 정의하여 객체 인스턴스를 생성할 수 있다.

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

파이썬에 대한 설명으로 옳은 것은 ㄴ, ㄷ이다.

파이썬은 동적 타이핑 언어로, 변수에 값을 대입할 때 자료형이 결정되므로 변수명 앞에 데이터형을 지정하지 않는다.

  • ㄱ: 자료형 선언이 필요한 것은 C·Java 같은 정적 타이핑 언어이므로 틀리다.
  • ㄴ: 인터프리터 기반의 대화식 언어이며 여러 운영체제에서 동일하게 실행되는 플랫폼 독립적 언어이다.
  • ㄷ: 객체지향을 지원하여 class로 클래스를 정의하고 인스턴스를 생성할 수 있다.
문제 13
해쉬(Hash)에 대한 설명으로 옳지 않은 것은?
1연결리스트는 체이닝(Chaining) 구현에 적합하다.
2충돌이 전혀 없다면 해쉬 탐색의 시간 복잡도는 O(1)이다.
3최악의 경우에도 이진 탐색보다 빠른 성능을 보인다.
4해쉬 함수는 임의의 길이의 데이터를 입력받을 수 있다.
정답 및 해설

해쉬 탐색은 충돌이 몰리면 최악의 경우 O(n)까지 느려지므로, 최악에도 이진 탐색보다 빠르다는 설명이 옳지 않다.

모든 키가 같은 버킷에 충돌하면 체인이나 탐사 순서를 끝까지 훑어야 하지만, 이진 탐색은 최악에도 O(log n)이 보장된다.

  • 체이닝은 같은 주소로 충돌한 항목을 연결리스트로 이어 저장하므로 연결리스트가 적합하다.
  • 충돌이 전혀 없으면 해쉬 함수 계산 한 번으로 위치를 찾으므로 O(1)이다.
  • 해쉬 함수는 임의 길이의 입력을 받아 정해진 범위의 값으로 사상한다.
문제 14
프로세스의 메모리는 세그먼테이션에 의해 그 역할이 할당되어 있다. 표준 C언어로 작성된 프로그램이 컴파일 후 실행파일로 변환되어 메모리를 할당받았을 때, 이 프로그램에 할당된 세그먼트에 대한 설명으로 옳은 것은?
1데이터 세그먼트는 모든 서브루틴의 지역변수와 서브루틴 종료 후 돌아갈 명령어의 주소값을 저장한다.
2스택은 현재 실행 중인 서브루틴의 매개변수와 프로그램의 전역변수를 저장한다.
3코드 세그먼트는 CPU가 실행할 명령어와 메인 서브루틴의 지역변수를 저장한다.
4힙(Heap)은 동적 메모리 할당을 위해 사용되는 공간이고, 주소값이 커지는 방향으로 증가한다.
정답 및 해설

힙은 동적 메모리 할당 영역이며 주소가 커지는 방향으로 자란다는 설명이 옳다.

C 프로그램의 메모리는 코드·데이터·힙·스택으로 나뉘며, 힙은 낮은 주소에서 위로, 스택은 높은 주소에서 아래로 자라는 것이 일반적인 배치이다.

  • 지역변수와 복귀 주소는 데이터 세그먼트가 아니라 스택에 저장된다.
  • 전역변수는 스택이 아니라 데이터 세그먼트에 저장된다.
  • main 함수의 지역변수도 스택에 저장되며, 코드 세그먼트에는 실행할 명령어만 들어간다.
문제 15
다음은 프로세스 상태 전이도이다. 각 상태 전이에 대한 예로 적절하지 않은 것은?
1㉠-프로세스에 자신이 기다리고 있던 이벤트가 발생하였다.
2㉡-실행할 프로세스를 선택할 때가 되면, 운영체제는 프로세스들 중 하나를 선택한다.
3㉢-실행 중인 프로세스가 자신에게 할당된 처리기의 시간을 모두 사용하였다.
4㉣-실행 중인 프로세스가 작업을 완료하거나 실행이 중단되었다.
정답 및 해설

그림에서 ㉣은 실행 → 대기 전이인데, 작업 완료나 실행 중단은 실행 → 종료 전이의 예이므로 이 설명이 적절하지 않다.

실행에서 대기로 가는 전이는 입출력 요청 등 이벤트를 기다려야 할 때 일어난다. 그림에는 실행에서 종료로 가는 별도의 화살표가 있다.

  • ㉠(대기 → 준비): 기다리던 이벤트가 발생하면 준비 상태로 돌아간다(wake up).
  • ㉡(준비 → 실행): 스케줄러가 준비 상태의 프로세스 하나를 선택해 처리기를 할당한다(dispatch).
  • ㉢(실행 → 준비): 할당된 시간 할당량을 모두 쓰면 처리기를 빼앗기고 준비 상태로 간다(timeout).
문제 16
-30.25×2-8의 값을 갖는 IEEE 754 단정도(Single Precision) 부동소수점(Floating-point) 수를 16진수로 변환하면?
15DF30000
29ED40000
3BDF20000
4C8F40000
정답 및 해설

-30.25×2−82^{-8}의 IEEE 754 단정도 표현은 BDF20000이다.

30.25 = 11110.01211110.01_{2} = 1.1110012×241.111001_{2} \times 2^{4}이므로 전체 값은 −1.1110012×2−4-1.111001_{2} \times 2^{-4}이다.
부호 비트는 음수라 1, 지수는 바이어스 127을 더해 −4+127=123-4 + 127 = 123 = 01111011이다.
가수부는 소수점 이하 111001 뒤를 0으로 채운다.

비트열 1 01111011 11100100…0을 4비트씩 묶으면 1011 1101 1111 0010 0000 … 이 되어 16진수 BDF20000이다.

  • 5DF30000은 부호 비트가 0인 양수여서 맞지 않는다.
  • 9ED40000은 지수 비트가 00111101(61)로 계산 결과 123과 다르다.
  • C8F40000은 지수 비트가 10010001(145)로 계산 결과 123과 다르다.
문제 17
다음은 어느 학생이 C 언어로 작성한 학점 계산 프로그램이다. 출력 결과는?
#include <stdio.h>
int main()
{
  int score = 85;
  char grade;
  if (score >= 90) grade='A';
  if (score >= 80) grade='B';
  if (score >= 70) grade='C';
  if (score < 70)  grade='F';
  printf("학점 : %c\n", grade);
  return 0;
}
1학점 : A
2학점 : B
3학점 : C
4학점 : F
정답 및 해설

출력 결과는 학점 : C이다.

if 문들이 else 없이 독립적으로 모두 검사되므로, 조건이 참인 마지막 대입이 grade를 덮어쓴다.

  • score >= 90: 85이므로 거짓, 대입 없음.
  • score >= 80: 참, grade = 'B'.
  • score >= 70: 참, grade = 'C'로 덮어씀.
  • score < 70: 거짓, 대입 없음 → 최종 grade는 'C'.
문제 18
파이프라인 해저드(Pipeline Hazard)에 대한 다음 설명에서 ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은?

- 하드웨어 자원의 부족 때문에 명령어를 적절한 클록 사이클에 실행할 수 있도록 지원하지 못할 때 ( ㉠ ) 해저드가 발생한다.
- 실행할 명령어를 적절한 클록 사이클에 가져오지 못할 때 ( ㉡ ) 해저드가 발생한다.

㉠㉡
①구조적제어
②구조적데이터
③데이터구조적
④데이터제어
1①
2②
3③
4④
정답 및 해설

㉠은 구조적 해저드, ㉡은 제어 해저드이다.

하드웨어 자원(메모리 포트·연산기 등)이 부족해 여러 명령어가 같은 자원을 동시에 쓰지 못하면 구조적 해저드, 분기 결과가 나오기 전이라 다음에 실행할 명령어를 제때 가져오지 못하면 제어 해저드이다.

  • 구조적·데이터 조합: 데이터 해저드는 앞 명령어의 결과가 아직 준비되지 않아 뒤 명령어가 그 값을 쓰지 못할 때 생기므로 명령어를 가져오지 못하는 ㉡에 맞지 않는다.
  • 데이터·구조적 조합: 자원 부족은 구조적 해저드, 명령어 인출 실패는 제어 해저드이므로 둘이 뒤바뀌었다.
  • 데이터·제어 조합: ㉡은 맞지만 자원 부족으로 생기는 ㉠은 데이터 해저드가 아니라 구조적 해저드이다.
문제 19
합성곱 신경망(CNN, Convolutional Neural Network) 처리 시 다음과 같은 입력과 필터가 주어졌을 때, 합성곱에 의해 생성된 특징 맵(Feature Map)의 ㉠에 들어갈 값은?

입력

1100
1111
0100
1101

필터

100
011
111

특징 맵

( ㉠ )
13
24
35
46
정답 및 해설

특징 맵 ㉠의 값은 4이다.

4×4 입력에 3×3 필터를 보폭 1로 적용하면 2×2 특징 맵이 되고, ㉠은 입력의 좌상단 3×3 영역과 필터의 같은 위치 원소끼리 곱해 더한 값이다.

1행: 1×1 + 1×0 + 0×0 = 1
2행: 1×0 + 1×1 + 1×1 = 2
3행: 0×1 + 1×1 + 0×1 = 1
합계: 1 + 2 + 1 = 4

문제 20
해밍코드에 대한 패리티 비트 생성 규칙과 인코딩 예가 다음과 같다. 이에 대한 설명으로 옳은 것은?

<패리티 비트 생성 규칙>

원본 데이터d4d3d2d1
인코딩된 데이터d4d3d2p4d1p2p1

p1 = (d1 + d2 + d4) mod 2
p2 = (d1 + d3 + d4) mod 2
p4 = (d2 + d3 + d4) mod 2

<인코딩 예>

원본 데이터0011
인코딩된 데이터0011110
1이 방법은 홀수 패리티를 사용하고 있다.
2원본 데이터가 0100이면 0101110으로 인코딩된다.
3패리티 비트에 오류가 발생하면 복구는 불가능하다.
4수신측이 0010001을 수신하면 한 개의 비트 오류를 수정한 후 최종적으로 0010으로 복호한다.
정답 및 해설

수신 데이터 0010001은 p4 한 비트의 오류로 판정되어 수정 후 데이터 0010으로 복호되므로 이 설명이 옳다.

수신 비트를 d4=0, d3=0, d2=1, p4=0, d1=0, p2=0, p1=1로 읽고 각 검사식을 다시 계산한다.
p1 검사: 1+0+1+0 = 0(짝수, 정상)
p2 검사: 0+0+0+0 = 0(정상)
p4 검사: 0+1+0+0 = 1(오류)
신드롬 100은 위치 4, 곧 p4를 가리키므로 데이터 비트는 그대로 0010이다.

  • 인코딩 예 0011에서 p1 = (1+1+0) mod 2 = 0처럼 1의 개수를 짝수로 맞추므로 홀수가 아닌 짝수 패리티이다.
  • 원본 0100은 p1 = 0, p2 = 1, p4 = 1이 되어 0101010으로 인코딩되며 0101110이 아니다.
  • 해밍 코드는 패리티 비트를 포함한 어느 위치의 1비트 오류든 신드롬으로 위치를 찾아 정정할 수 있다.
9급 국가직 컴퓨터일반 기출문제모두CBT · moducbt.com
21년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
컴퓨팅 사고(Computational Thinking)에서 주어진 문제의 중요한 특징만으로 문제를 간결하게 재정의함으로써 문제 해결을 쉽게 하는 과정은?
1분해
2알고리즘
3추상화
4패턴 인식
정답 및 해설

문제의 중요한 특징만 남기고 불필요한 세부를 제거해 간결하게 재정의하는 과정은 추상화이다.

컴퓨팅 사고는 분해·패턴 인식·추상화·알고리즘의 네 요소로 설명되며, 핵심만 뽑아 모델로 단순화하는 단계가 추상화에 해당한다.

  • 분해: 복잡한 문제를 작고 다루기 쉬운 하위 문제로 나누는 과정이다.
  • 패턴 인식: 문제 안이나 문제들 사이에서 반복되는 유사성·규칙을 찾는 과정이다.
  • 알고리즘: 문제를 해결하는 단계적 절차를 설계하는 과정이다.
문제 2
소프트웨어에 대한 설명으로 옳지 않은 것은?
1하드웨어에 대응하는 개념으로 우리가 원하는 대로 컴퓨터를 작동하게 만드는 논리적인 바탕을 제공한다.
2운영체제 등 컴퓨터 시스템을 가동시키는 데 사용되는 소프트웨어를 시스템 소프트웨어라 한다.
3문서 작성이나 게임 등 특정 분야의 업무를 처리하는 데 사용되는 소프트웨어를 응용 소프트웨어라 한다.
4고급 언어로 작성된 프로그램을 한꺼번에 번역한 후 실행하는 것이 인터프리터 방식이다.
정답 및 해설

고급 언어 프로그램을 한꺼번에 번역한 뒤 실행하는 것은 컴파일러 방식이므로, 이를 인터프리터 방식이라 한 설명이 옳지 않다.

인터프리터는 원시 프로그램을 한 줄(문장) 단위로 번역하면서 곧바로 실행하며, 목적 프로그램을 따로 만들지 않는다.

  • 소프트웨어는 하드웨어에 대응하는 개념으로, 컴퓨터를 원하는 대로 동작시키는 논리적 바탕이다.
  • 운영체제처럼 컴퓨터 시스템을 가동·관리하는 소프트웨어는 시스템 소프트웨어이다.
  • 문서 작성·게임처럼 특정 업무를 처리하는 소프트웨어는 응용 소프트웨어이다.
문제 3
4GHz의 클록 속도를 갖는 CPU에서 CPI(Cycle per Instruction)가 4.0이고 총 1010개의 명령어로 구성된 프로그램을 수행하려고 할 때, 이 프로그램의 실행 완료를 위해 필요한 시간은?
11초
210초
3100초
41,000초
정답 및 해설

프로그램 실행 시간은 10초이다.

CPU 실행 시간 = 명령어 수 × CPI ÷ 클록 속도
T=1010×4.04×109 HzT = \dfrac{10^{10} \times 4.0}{4 \times 10^{9}\,\mathrm{Hz}}

분자 4×10104 \times 10^{10} 사이클을 초당 4×1094 \times 10^{9} 사이클로 나누면 T=10 sT = 10\,\mathrm{s}로, 클록 사이클 총수 ÷ 클록 속도가 실행 시간이 된다.

문제 4
-35를 2의 보수(2's Complement)로 변환하면?
111011100
211011101
311101100
411101101
정답 및 해설

-35의 8비트 2의 보수 표현은 11011101이다.

35를 2진수로 쓰면 00100011이다.
모든 비트를 반전(1의 보수)하면 11011100이다.
여기에 1을 더하면 11011101이 된다.

  • 11011100은 1을 더하기 전 값, 즉 35의 1의 보수이다.
  • 11101100은 2의 보수로 해석하면 -20이므로 -35가 아니다.
  • 11101101은 2의 보수로 해석하면 -19이므로 -35가 아니다.
문제 5
OSI 7계층에서 계층별로 사용하는 프로토콜의 데이터 단위는 다음 표와 같다. ㉠~㉢에 들어갈 내용을 바르게 연결한 것은?
계층데이터 단위
트랜스포트(Transport) 계층( ㉠ )
네트워크(Network) 계층( ㉡ )
데이터링크(Datalink) 계층( ㉢ )
물리(Physical) 계층비트
㉠㉡㉢
①세그먼트프레임패킷
②패킷세그먼트프레임
③세그먼트패킷프레임
④패킷프레임세그먼트
1①
2②
3③
4④
정답 및 해설

㉠ 트랜스포트 계층은 세그먼트, ㉡ 네트워크 계층은 패킷, ㉢ 데이터링크 계층은 프레임이다.

캡슐화가 진행되며 상위 데이터에 TCP 헤더가 붙으면 세그먼트, IP 헤더가 붙으면 패킷, 데이터링크 헤더·트레일러가 붙으면 프레임이 되고 물리 계층에서 비트로 전송된다.

  • 세그먼트·프레임·패킷 조합은 네트워크 계층과 데이터링크 계층의 단위가 서로 뒤바뀌었다.
  • 패킷·세그먼트·프레임 조합은 트랜스포트 계층과 네트워크 계층의 단위가 뒤바뀌었다.
  • 패킷·프레임·세그먼트 조합은 세 계층 모두 단위가 맞지 않는다.
문제 6
300개의 노드로 이진 트리를 생성하고자 할 때, 생성 가능한 이진 트리의 최대 높이와 최소 높이로 모두 옳은 것은? (단, 1개의 노드로 생성된 이진 트리의 높이는 1이다)
최대 높이최소 높이
①2998
②2999
③3008
④3009
1①
2②
3③
4④
정답 및 해설

노드 300개로 만들 수 있는 이진 트리의 최대 높이는 300, 최소 높이는 9이다.

최대 높이: 모든 노드가 한쪽 자식으로만 이어진 편향 트리이면 노드마다 한 층씩 차지하므로 높이 300이다.

최소 높이: 높이 h인 포화 이진 트리의 노드 수는 2h−12^{h}-1이다. 28−1=255<300≤29−1=5112^{8}-1 = 255 < 300 \le 2^{9}-1 = 511이므로 h = 9가 필요하다.

  • 최대 299·최소 8: 편향 트리의 높이는 노드 수와 같은 300이고, 높이 8로는 최대 255개 노드만 담을 수 있어 둘 다 틀리다.
  • 최대 299·최소 9: 최소 높이는 맞지만, 편향 트리의 최대 높이는 299가 아니라 300이다.
  • 최대 300·최소 8: 최대 높이는 맞지만, 높이 8의 이진 트리는 최대 255개 노드만 담을 수 있어 300개를 수용하지 못한다.
문제 7
아래와 같은 순서대로 회의실 사용 요청이 있을 때, 다음 중 가장 많은 회의실 사용 시간을 확보할 수 있는 스케줄링 방법은? (단, 회의실은 하나이고, 사용 요청은 (시작 시각, 종료 시각)으로 구성된다. 회의실에 특정 회의가 할당되면 이 회의 시간과 겹치는 회의 요청에 대해서는 회의실 배정을 할 수 없다)
(11:50, 12:30),  (9:00, 12:00),  (13:00, 14:30),
(14:40, 15:00),  (14:50, 16:00),  (15:40, 16:20),
(16:10, 18:00)
1시작 시각이 빠른 요청부터 회의실 사용이 가능하면 확정한다.
2종료 시각이 빠른 요청부터 회의실 사용이 가능하면 확정한다.
3사용 요청 순서대로 회의실 사용이 가능하면 확정한다.
4회의 시간이 긴 요청부터 회의실 사용이 가능하면 확정한다.
정답 및 해설

각 방법을 적용해 보면 회의 시간이 긴 요청부터 확정할 때 사용 시간이 450분으로 가장 많다.

긴 순서로 9:00~12:00(180분), 16:10~18:00(110분), 13:00~14:30(90분), 14:50~16:00(70분)을 확정하고, 남은 요청은 모두 겹치므로 합계 450분이다.

  • 시작 시각이 빠른 순: 9:00~12:00, 13:00~14:30, 14:40~15:00, 15:40~16:20이 확정되어 330분이다.
  • 종료 시각이 빠른 순: 같은 네 회의가 확정되어 330분이다(회의 개수는 최대이나 시간 합은 아니다).
  • 요청 순서대로: 11:50~12:30, 13:00~14:30, 14:40~15:00, 15:40~16:20이 확정되어 190분이다.
문제 8
제품 테이블에 대하여 SQL 명령을 실행한 결과가 다음과 같을 때, ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은?

<제품 테이블>

제품ID제품이름단가제조업체
P001나사못100A
P010망치1,000B
P011드라이버3,000B
P020망치1,500C
P021장갑800C
P022너트200C
P030드라이버4,000D
P031절연테이프500D
<SQL 명령>
SELECT 제조업체, MAX(단가) AS 최고단가
FROM 제품
GROUP BY ( ㉠ )
HAVING COUNT(*) > ( ㉡ );

<실행 결과>

제조업체최고단가
B3,000
C1,500
D4,000
㉠㉡
①제조업체1
②제조업체2
③단가1
④단가2
1①
2②
3③
4④
정답 및 해설

㉠에는 제조업체, ㉡에는 1이 들어간다.

결과가 제조업체별 최고단가이므로 제조업체로 그룹화해야 한다. 업체별 제품 수는 A 1개, B 2개, C 3개, D 2개이고, 결과에 A만 빠졌으므로 HAVING 조건은 COUNT(*) > 1이다.

  • 제조업체·2 조합: 제품이 2개를 초과하는 C만 남아 결과와 다르다.
  • 단가·1 조합: 단가가 모두 달라 단가별 그룹은 각각 1건이므로 COUNT(*) > 1을 만족하는 그룹이 없고, SELECT의 제조업체도 그룹 기준이 아니다.
  • 단가·2 조합: 마찬가지로 단가별 그룹이 모두 1건이라 조건을 만족하는 그룹이 없어 결과와 다르다.
문제 9
스택의 입력으로 4개의 문자 D, C, B, A가 순서대로 들어올 때, 스택 연산 PUSH와 POP에 의해서 출력될 수 없는 결과는?
1ABCD
2BDCA
3CDBA
4DCBA
정답 및 해설

D, C, B, A 순으로 입력될 때 BDCA는 출력될 수 없다.

B를 먼저 출력하려면 D, C, B를 차례로 PUSH한 뒤 B를 POP해야 하고, 이때 스택 top에는 C가 있다. 따라서 다음 출력은 C나 새로 넣는 A여야 하며 C 아래 묻힌 D가 먼저 나올 수 없다.

  • ABCD: 네 문자를 모두 PUSH한 뒤 연속으로 POP하면 A, B, C, D 순으로 나온다.
  • CDBA: D, C를 PUSH하고 C, D를 POP한 뒤, B와 A를 각각 PUSH 직후 POP하면 된다.
  • DCBA: 각 문자를 PUSH하자마자 POP하면 입력 순서 그대로 나온다.
문제 10
임계구역에 대한 설명으로 옳은 것은?
1임계구역에 진입하고자 하는 프로세스가 무한대기에 빠지지 않도록 하는 조건을 진행의 융통성(Progress Flexibility)이라 한다.
2자원을 공유하는 프로세스들 사이에서 공유자원에 대해 동시에 접근하여 변경할 수 있는 프로그램 코드 부분을 임계영역(Critical Section)이라 한다.
3한 프로세스가 다른 프로세스의 진행을 방해하지 않도록 하는 조건을 한정 대기(Bounded Waiting)라 한다.
4한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없도록 하는 조건을 상호 배제(Mutual Exclusion)라 한다.
정답 및 해설

한 프로세스가 임계구역에 있으면 다른 프로세스가 들어갈 수 없게 하는 조건은 상호 배제이므로 이 설명이 옳다.

임계구역 문제의 해결 조건은 상호 배제, 진행(Progress), 한정 대기(Bounded Waiting)의 세 가지이다.

  • 진입하려는 프로세스가 무한대기에 빠지지 않게 하는 조건은 한정 대기이며, 진행의 융통성이라 한 것은 틀리다.
  • 임계구역은 공유자원에 접근하는 코드 부분으로, 여러 프로세스가 동시에 접근해 변경하지 못하도록 보호해야 하는 영역이다.
  • 임계구역 밖의 프로세스가 다른 프로세스의 진입을 방해하지 않게 하는 조건은 진행이며, 한정 대기가 아니다.
문제 11
통합 테스팅 방법에 대한 설명으로 옳지 않은 것은?
1연쇄식(Threads) 통합은 초기에 시스템 골격을 파악하기 어렵다.
2빅뱅(Big-bang) 통합은 모든 모듈을 동시에 통합하여 테스팅한다.
3상향식(Bottom-up) 통합은 가장 하부 모듈부터 통합하여 테스팅한다.
4하향식(Top-down) 통합은 프로그램 제어 구조에서 상위 모듈부터 통합하는 것을 말한다.
정답 및 해설

연쇄식(Threads) 통합은 핵심 기능 흐름을 먼저 연결하므로 초기에 시스템 골격을 파악할 수 있다. 따라서 파악하기 어렵다는 설명이 옳지 않다.

연쇄식 통합은 특정 기능을 수행하는 모듈들의 실행 경로(스레드)를 단위로 통합해 나가는 방식으로, 중요한 기능이 일찍 동작하는 형태로 드러난다.

  • 빅뱅 통합은 모든 모듈을 한 번에 결합해 테스트한다.
  • 상향식 통합은 최하위 모듈부터 결합하며 드라이버를 사용한다.
  • 하향식 통합은 제어 구조의 최상위 모듈부터 결합하며 스텁을 사용한다.
문제 12
다음 중 파이썬 프로그래밍 언어에 대한 설명으로 옳은 것만을 모두 고르면?

ㄱ. 변수 선언 시 변수명 앞에 데이터형을 지정해야 한다.
ㄴ. 플랫폼에 독립적인 대화식 언어이다.
ㄷ. 클래스를 정의하여 객체 인스턴스를 생성할 수 있다.

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

파이썬에 대한 설명으로 옳은 것은 ㄴ, ㄷ이다.

파이썬은 동적 타이핑 언어로, 변수에 값을 대입할 때 자료형이 결정되므로 변수명 앞에 데이터형을 지정하지 않는다.

  • ㄱ: 자료형 선언이 필요한 것은 C·Java 같은 정적 타이핑 언어이므로 틀리다.
  • ㄴ: 인터프리터 기반의 대화식 언어이며 여러 운영체제에서 동일하게 실행되는 플랫폼 독립적 언어이다.
  • ㄷ: 객체지향을 지원하여 class로 클래스를 정의하고 인스턴스를 생성할 수 있다.
문제 13
해쉬(Hash)에 대한 설명으로 옳지 않은 것은?
1연결리스트는 체이닝(Chaining) 구현에 적합하다.
2충돌이 전혀 없다면 해쉬 탐색의 시간 복잡도는 O(1)이다.
3최악의 경우에도 이진 탐색보다 빠른 성능을 보인다.
4해쉬 함수는 임의의 길이의 데이터를 입력받을 수 있다.
정답 및 해설

해쉬 탐색은 충돌이 몰리면 최악의 경우 O(n)까지 느려지므로, 최악에도 이진 탐색보다 빠르다는 설명이 옳지 않다.

모든 키가 같은 버킷에 충돌하면 체인이나 탐사 순서를 끝까지 훑어야 하지만, 이진 탐색은 최악에도 O(log n)이 보장된다.

  • 체이닝은 같은 주소로 충돌한 항목을 연결리스트로 이어 저장하므로 연결리스트가 적합하다.
  • 충돌이 전혀 없으면 해쉬 함수 계산 한 번으로 위치를 찾으므로 O(1)이다.
  • 해쉬 함수는 임의 길이의 입력을 받아 정해진 범위의 값으로 사상한다.
문제 14
프로세스의 메모리는 세그먼테이션에 의해 그 역할이 할당되어 있다. 표준 C언어로 작성된 프로그램이 컴파일 후 실행파일로 변환되어 메모리를 할당받았을 때, 이 프로그램에 할당된 세그먼트에 대한 설명으로 옳은 것은?
1데이터 세그먼트는 모든 서브루틴의 지역변수와 서브루틴 종료 후 돌아갈 명령어의 주소값을 저장한다.
2스택은 현재 실행 중인 서브루틴의 매개변수와 프로그램의 전역변수를 저장한다.
3코드 세그먼트는 CPU가 실행할 명령어와 메인 서브루틴의 지역변수를 저장한다.
4힙(Heap)은 동적 메모리 할당을 위해 사용되는 공간이고, 주소값이 커지는 방향으로 증가한다.
정답 및 해설

힙은 동적 메모리 할당 영역이며 주소가 커지는 방향으로 자란다는 설명이 옳다.

C 프로그램의 메모리는 코드·데이터·힙·스택으로 나뉘며, 힙은 낮은 주소에서 위로, 스택은 높은 주소에서 아래로 자라는 것이 일반적인 배치이다.

  • 지역변수와 복귀 주소는 데이터 세그먼트가 아니라 스택에 저장된다.
  • 전역변수는 스택이 아니라 데이터 세그먼트에 저장된다.
  • main 함수의 지역변수도 스택에 저장되며, 코드 세그먼트에는 실행할 명령어만 들어간다.
문제 15
다음은 프로세스 상태 전이도이다. 각 상태 전이에 대한 예로 적절하지 않은 것은?
1㉠-프로세스에 자신이 기다리고 있던 이벤트가 발생하였다.
2㉡-실행할 프로세스를 선택할 때가 되면, 운영체제는 프로세스들 중 하나를 선택한다.
3㉢-실행 중인 프로세스가 자신에게 할당된 처리기의 시간을 모두 사용하였다.
4㉣-실행 중인 프로세스가 작업을 완료하거나 실행이 중단되었다.
정답 및 해설

그림에서 ㉣은 실행 → 대기 전이인데, 작업 완료나 실행 중단은 실행 → 종료 전이의 예이므로 이 설명이 적절하지 않다.

실행에서 대기로 가는 전이는 입출력 요청 등 이벤트를 기다려야 할 때 일어난다. 그림에는 실행에서 종료로 가는 별도의 화살표가 있다.

  • ㉠(대기 → 준비): 기다리던 이벤트가 발생하면 준비 상태로 돌아간다(wake up).
  • ㉡(준비 → 실행): 스케줄러가 준비 상태의 프로세스 하나를 선택해 처리기를 할당한다(dispatch).
  • ㉢(실행 → 준비): 할당된 시간 할당량을 모두 쓰면 처리기를 빼앗기고 준비 상태로 간다(timeout).
문제 16
-30.25×2-8의 값을 갖는 IEEE 754 단정도(Single Precision) 부동소수점(Floating-point) 수를 16진수로 변환하면?
15DF30000
29ED40000
3BDF20000
4C8F40000
정답 및 해설

-30.25×2−82^{-8}의 IEEE 754 단정도 표현은 BDF20000이다.

30.25 = 11110.01211110.01_{2} = 1.1110012×241.111001_{2} \times 2^{4}이므로 전체 값은 −1.1110012×2−4-1.111001_{2} \times 2^{-4}이다.
부호 비트는 음수라 1, 지수는 바이어스 127을 더해 −4+127=123-4 + 127 = 123 = 01111011이다.
가수부는 소수점 이하 111001 뒤를 0으로 채운다.

비트열 1 01111011 11100100…0을 4비트씩 묶으면 1011 1101 1111 0010 0000 … 이 되어 16진수 BDF20000이다.

  • 5DF30000은 부호 비트가 0인 양수여서 맞지 않는다.
  • 9ED40000은 지수 비트가 00111101(61)로 계산 결과 123과 다르다.
  • C8F40000은 지수 비트가 10010001(145)로 계산 결과 123과 다르다.
문제 17
다음은 어느 학생이 C 언어로 작성한 학점 계산 프로그램이다. 출력 결과는?
#include <stdio.h>
int main()
{
  int score = 85;
  char grade;
  if (score >= 90) grade='A';
  if (score >= 80) grade='B';
  if (score >= 70) grade='C';
  if (score < 70)  grade='F';
  printf("학점 : %c\n", grade);
  return 0;
}
1학점 : A
2학점 : B
3학점 : C
4학점 : F
정답 및 해설

출력 결과는 학점 : C이다.

if 문들이 else 없이 독립적으로 모두 검사되므로, 조건이 참인 마지막 대입이 grade를 덮어쓴다.

  • score >= 90: 85이므로 거짓, 대입 없음.
  • score >= 80: 참, grade = 'B'.
  • score >= 70: 참, grade = 'C'로 덮어씀.
  • score < 70: 거짓, 대입 없음 → 최종 grade는 'C'.
문제 18
파이프라인 해저드(Pipeline Hazard)에 대한 다음 설명에서 ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은?

- 하드웨어 자원의 부족 때문에 명령어를 적절한 클록 사이클에 실행할 수 있도록 지원하지 못할 때 ( ㉠ ) 해저드가 발생한다.
- 실행할 명령어를 적절한 클록 사이클에 가져오지 못할 때 ( ㉡ ) 해저드가 발생한다.

㉠㉡
①구조적제어
②구조적데이터
③데이터구조적
④데이터제어
1①
2②
3③
4④
정답 및 해설

㉠은 구조적 해저드, ㉡은 제어 해저드이다.

하드웨어 자원(메모리 포트·연산기 등)이 부족해 여러 명령어가 같은 자원을 동시에 쓰지 못하면 구조적 해저드, 분기 결과가 나오기 전이라 다음에 실행할 명령어를 제때 가져오지 못하면 제어 해저드이다.

  • 구조적·데이터 조합: 데이터 해저드는 앞 명령어의 결과가 아직 준비되지 않아 뒤 명령어가 그 값을 쓰지 못할 때 생기므로 명령어를 가져오지 못하는 ㉡에 맞지 않는다.
  • 데이터·구조적 조합: 자원 부족은 구조적 해저드, 명령어 인출 실패는 제어 해저드이므로 둘이 뒤바뀌었다.
  • 데이터·제어 조합: ㉡은 맞지만 자원 부족으로 생기는 ㉠은 데이터 해저드가 아니라 구조적 해저드이다.
문제 19
합성곱 신경망(CNN, Convolutional Neural Network) 처리 시 다음과 같은 입력과 필터가 주어졌을 때, 합성곱에 의해 생성된 특징 맵(Feature Map)의 ㉠에 들어갈 값은?

입력

1100
1111
0100
1101

필터

100
011
111

특징 맵

( ㉠ )
13
24
35
46
정답 및 해설

특징 맵 ㉠의 값은 4이다.

4×4 입력에 3×3 필터를 보폭 1로 적용하면 2×2 특징 맵이 되고, ㉠은 입력의 좌상단 3×3 영역과 필터의 같은 위치 원소끼리 곱해 더한 값이다.

1행: 1×1 + 1×0 + 0×0 = 1
2행: 1×0 + 1×1 + 1×1 = 2
3행: 0×1 + 1×1 + 0×1 = 1
합계: 1 + 2 + 1 = 4

문제 20
해밍코드에 대한 패리티 비트 생성 규칙과 인코딩 예가 다음과 같다. 이에 대한 설명으로 옳은 것은?

<패리티 비트 생성 규칙>

원본 데이터d4d3d2d1
인코딩된 데이터d4d3d2p4d1p2p1

p1 = (d1 + d2 + d4) mod 2
p2 = (d1 + d3 + d4) mod 2
p4 = (d2 + d3 + d4) mod 2

<인코딩 예>

원본 데이터0011
인코딩된 데이터0011110
1이 방법은 홀수 패리티를 사용하고 있다.
2원본 데이터가 0100이면 0101110으로 인코딩된다.
3패리티 비트에 오류가 발생하면 복구는 불가능하다.
4수신측이 0010001을 수신하면 한 개의 비트 오류를 수정한 후 최종적으로 0010으로 복호한다.
정답 및 해설

수신 데이터 0010001은 p4 한 비트의 오류로 판정되어 수정 후 데이터 0010으로 복호되므로 이 설명이 옳다.

수신 비트를 d4=0, d3=0, d2=1, p4=0, d1=0, p2=0, p1=1로 읽고 각 검사식을 다시 계산한다.
p1 검사: 1+0+1+0 = 0(짝수, 정상)
p2 검사: 0+0+0+0 = 0(정상)
p4 검사: 0+1+0+0 = 1(오류)
신드롬 100은 위치 4, 곧 p4를 가리키므로 데이터 비트는 그대로 0010이다.

  • 인코딩 예 0011에서 p1 = (1+1+0) mod 2 = 0처럼 1의 개수를 짝수로 맞추므로 홀수가 아닌 짝수 패리티이다.
  • 원본 0100은 p1 = 0, p2 = 1, p4 = 1이 되어 0101010으로 인코딩되며 0101110이 아니다.
  • 해밍 코드는 패리티 비트를 포함한 어느 위치의 1비트 오류든 신드롬으로 위치를 찾아 정정할 수 있다.