icon

안동민 개발노트

7장 : 통합 복습

전체 통합 복습과 시험형 문제풀이

통합 복습 학습 절입니다.

마지막 절에서는 전체 범위를 통합 복습합니다.

지금까지 8과목을 7장 1절으로 압축해서 봤습니다.

이산수학
논리회로
C프로그래밍
자료구조
컴퓨터구조
운영체제
객체지향프로그래밍
웹프로그래밍

이번 절은 새 내용을 많이 넣는 절이 아닙니다. 목표는 다음과 같습니다.

8과목을 따로따로 외우는 것이 아니라, 시험에서 바로 꺼낼 수 있게 한 덩어리로 정리하는 것.

전체 지도 다시 보기

8과목은 이렇게 연결됩니다.

이산수학
→ 0과 1, 논리, 그래프, 트리의 수학적 기초

논리회로
→ 0과 1로 실제 회로를 만듦

컴퓨터구조
→ CPU, 메모리, 명령어가 어떻게 움직이는지 배움

운영체제
→ CPU, 메모리, 파일, 장치를 누가 관리하는지 배움

C프로그래밍
→ 컴퓨터에게 명령을 쓰는 기본 언어

자료구조
→ 데이터를 어떻게 저장하고 찾고 정리할지 배움

객체지향프로그래밍
→ 프로그램을 객체 단위로 설계하는 법

웹프로그래밍
→ 사용자가 보는 웹 화면과 동작을 만드는 법

한 문장으로 합치면 다음과 같습니다.

컴퓨터공학 기초는 0과 1로 데이터를 표현하고, 회로와 CPU가 처리하고, 운영체제가 자원을 관리하고, 프로그래밍 언어와 자료구조로 문제를 풀고, 객체지향과 웹으로 프로그램을 설계하고 사용자에게 보여주는 과정입니다.

1장 1~4절 압축: 진법, 논리, 논리회로

반드시 기억할 것

비트 = 0 또는 1 하나
바이트 = 8비트
2진수 = 컴퓨터의 기본 수 표현
2의 보수 = 음수를 표현하는 대표 방식
명제 = 참/거짓이 분명한 문장
부울대수 = 0과 1로 계산하는 수학
논리게이트 = AND, OR, NOT 같은 기본 회로

이산수학 범위에는 진법변환, 이진법 연산, 논리와 명제, 부울대수, 그래프와 트리가 들어 있고, 논리회로 범위에는 데이터 표현, 부울대수, 논리게이트, 조합논리회로, 순서논리회로가 들어 있습니다.

진법 핵심

1011₂ = 8 + 0 + 2 + 1 = 11₁₀
13₁₀ = 1101₂

2진수를 16진수로 바꿀 때는 오른쪽부터 4자리씩 묶습니다.

11010110₂
= 1101 0110
= D6₁₆

2의 보수 핵심

```text title="4비트에서 -5를 표현하려면" 5 = 0101 1의 보수 = 1010 2의 보수 = 1011


```text title="따라서"
-5 = 1011

컴퓨터구조 예시문제에도 4비트 2의 보수로 4 - 5를 계산하는 문제가 나오며, 4 = 0100, 5 = 0101, -5 = 1011, 결과는 1111입니다.

논리 핵심

연산의미1이 되는 경우
AND그리고둘 다 1
OR또는하나라도 1
NOT반대0은 1, 1은 0
XOR배타적 OR서로 다를 때
NANDAND 후 NOTAND의 반대
NOROR 후 NOTOR의 반대

드모르간 법칙

반드시 암기합니다.

(AB)' = A' + B'
(A + B)' = A'B'

조합논리회로와 순서논리회로

구분조합논리회로순서논리회로
출력 기준현재 입력만현재 입력 + 이전 상태
기억 기능없음있음
대표가산기, 디코더, 인코더, MUX플립플롭, 레지스터, 카운터
조합 = 계산
순서 = 기억

2장 1~4절 압축: C프로그래밍

반드시 기억할 것

C프로그래밍 범위에는 자료형, 변수, 선행처리기, 입출력, 연산자, 제어문, 함수, 배열, 포인터, 구조체, 공용체, 파일처리가 포함됩니다.

C 기본 구조

#include <stdio.h>

int main(void) {
    printf("Hello");
    return 0;
}
#include <stdio.h> = 표준 입출력 준비
main = 프로그램 시작점
printf = 출력
scanf = 입력
return 0 = 정상 종료

자료형

자료형의미
int정수
float실수
double더 정밀한 실수
char문자 하나
void값 없음

문자와 문자열은 다릅니다.

'A'   // 문자 하나
"A"   // 문자열

scanf 주의

int a;
scanf("%d", &a);

scanf는 변수에 값을 넣어야 하므로 주소가 필요합니다.

&a = a의 주소

시험 혼동 포인트 1: printf는 예약어가 아닙니다

C 예시문제에서 예약어가 아닌 것을 묻는 문제가 나옵니다. for, break, register는 예약어지만 printf는 표준 출력 함수 이름이지 예약어가 아닙니다.

시험 혼동 포인트 2: 매크로는 단순 치환

#define SQ(x) x*x

printf("%d", SQ(1+2));

이것을 (1+2)*(1+2)로 생각하면 안 됩니다.

실제로는
SQ(1+2)
→ 1+2*1+2
→ 1+2+2
→ 5

정답은 5입니다.

시험 혼동 포인트 3: 실수에서 정수로 바꾸면 소수점 버림

float k = 12.5;
int j;
j = k;
printf("%d", j);
출력
12

반올림이 아닙니다. 버림입니다.

배열 핵심

int arr[5] = {10, 20, 30, 40, 50};
사용 가능한 인덱스
0, 1, 2, 3, 4

마지막 인덱스는 크기보다 1 작습니다.

배열 예시문제 핵심

int moon[] = {1,2,3,4,5,6,7,8,9,10};

for(a=0; a<8; ++a)
    if(moon[a] % 2 == 0)
        sum += moon[a];

a는 0부터 7까지입니다.

moon[0]~moon[7] = 1,2,3,4,5,6,7,8
짝수 = 2,4,6,8
합 = 20

정답은 20입니다.

포인터 핵심

int a = 10;
int *p = &a;
표현의미
aa의 값
&aa의 주소
pa의 주소
*pp가 가리키는 곳의 값
*p = 20;

이렇게 하면 a의 값도 20이 됩니다.

구조체 핵심

struct Student {
    int id;
    char name[20];
    int score;
};

구조체는 서로 다른 자료형을 하나로 묶습니다.

구조체 = 여러 종류의 데이터를 한 묶음으로 표현

구조체 예시문제에서 “구조체 정의 시 태그명은 반드시 있어야 합니다”는 설명은 틀린 설명입니다. typedef struct { ... } Student;처럼 태그명을 생략할 수 있습니다.


3장 1~4절 압축: 자료구조

자료구조 범위에는 알고리즘, 추상 자료형, 성능 분석, 배열, 스택, 큐, 연결리스트, 트리, 그래프, 탐색, 정렬, 해싱이 포함됩니다.

자료구조와 알고리즘

자료구조 = 데이터를 저장하고 관리하는 방법
알고리즘 = 문제를 해결하는 절차

추상 자료형, ADT

ADT = 자료의 집합 + 연산의 명세

자료구조 예시문제에서도 “자료의 집합과 이에 대한 연산 집합에 대한 명세”를 묻고, 정답은 추상 자료형입니다.

시간복잡도

복잡도
O(1)배열 인덱스 접근
O(log n)이진 탐색
O(n)순차 탐색
O(n²)이중 반복문, 버블/선택/삽입 정렬
O(n log n)퀵/합병/힙 정렬 평균 또는 보통

배열

장점 = 인덱스 접근 O(1)
단점 = 중간 삽입/삭제 O(n)

스택

LIFO = Last In First Out
나중에 들어온 것이 먼저 나감
연산
push = 삽입
pop = 삭제
빈 스택에서 pop하면
언더플로

자료구조 예시문제에서도 top ≤ 0일 때 처리해야 하는 것은 언더플로 처리입니다.

FIFO = First In First Out
먼저 들어온 것이 먼저 나감
연산
enqueue = 삽입
dequeue = 삭제

후위표기식

중위: A + B
후위: A B +
예시문제
A/B**C-D*(E+F)/G
후위표기
ABC**/DEF+*G/-

자료구조 예시문제의 정답도 이 형태입니다.

연결리스트

연결리스트 = 노드들을 포인터로 연결한 구조
노드 = 데이터 + 링크

배열과 비교는 다음과 같습니다.

구분배열연결리스트
접근빠름, O(1)느림, O(n)
삽입/삭제밀거나 당김포인터 변경
저장연속 공간흩어진 공간 연결

트리

트리 = 부모-자식 관계를 가진 계층 구조
루트 = 가장 위 노드
단말노드 = 자식 없는 노드

완전 이진트리

마지막 레벨을 제외하고 모두 채워져 있고,
마지막 레벨은 왼쪽부터 채워진 이진트리

자료구조 예시문제에서도 이 설명의 정답은 완전 이진트리입니다.

이진트리 순회

순회순서
전위루트 → 왼쪽 → 오른쪽
중위왼쪽 → 루트 → 오른쪽
후위왼쪽 → 오른쪽 → 루트
예시 트리
        A
      /   \
     B     C
    /     /
   D     E
후위순회
D B E C A

자료구조 예시문제의 후위순회 정답도 DBECA입니다.

그래프

그래프 = 정점 + 간선
DFS = 스택 또는 재귀
BFS = 큐
탐색자료구조특징
DFS스택/재귀깊게 먼저
BFS가까운 곳 먼저

정렬

버블 = 이웃 비교
선택 = 최솟값 선택
삽입 = 알맞은 위치에 끼워 넣기
퀵 = 피벗 기준 분할
합병 = 나누고 합치기
힙 = 힙 이용
기수 = 자리수 기준

해싱

해싱 = 키를 해시 함수에 넣어 저장 위치 계산
충돌 = 서로 다른 키가 같은 주소로 감
체이닝 = 충돌 데이터를 연결리스트로 연결

4장 1~2절 압축: 컴퓨터구조

컴퓨터구조 범위에는 컴퓨터 기본구조, 시스템 버스, 디지털 논리회로, 진법과 보수, 명령어, CPU, 제어장치, 기억장치, 입출력, 고성능 컴퓨터가 포함됩니다.

컴퓨터 기본 구성

CPU
기억장치
입력장치
출력장치

시스템 버스

데이터버스 = 실제 데이터 이동
주소버스 = 위치 주소 이동
제어버스 = 읽기/쓰기 같은 제어신호 이동

예시문제에서 시스템 버스 구성요소가 아닌 것은 로컬버스입니다.

명령어

명령어 = 연산자 + 피연산자
ADD B
ADD = 연산자
B = 피연산자

주소 수별 명령어

형식핵심
3주소결과, 입력1, 입력2
2주소왼쪽 피연산자에 결과 저장
1주소AC 누산기 사용
0주소스택 사용

주소 지정 방식

즉치 = 값 자체
직접 = 주소
간접 = 주소의 주소
묵시적 = 안 써도 정해짐
레지스터 = 레지스터 값
레지스터 간접 = 레지스터 안의 주소
변위 = 기준 주소 + 거리

AC 추적 문제

LOAD A
ADD B
MUL C
STORE T
LOAD D
MUL E
ADD T
흐름
AC = A
AC = A + B
AC = (A+B)*C
T = (A+B)*C
AC = D
AC = D*E
AC = D*E + T
결과
(A+B)*C + D*E

컴퓨터구조 예시문제의 정답도 (A+B)*C+D*E입니다.

CPU 구성

ALU = 산술·논리 연산
제어장치 = 명령어 해석과 제어신호
레지스터 = CPU 내부 임시 저장소
내부버스 = CPU 내부 통로

주요 레지스터

레지스터역할
PC다음 명령어 주소
IR현재 명령어
MAR메모리 주소
MBR/MDR메모리 데이터
AC연산 결과
SP스택 위치
Flag상태 정보

인출 사이클

MAR ← PC
MBR ← M[MAR]
PC ← PC + 1
IR ← MBR
핵심 흐름
PC → MAR → 메모리 → MBR → IR

기억장치 계층

CPU에 가까운 순서
레지스터 → 캐시 → 주기억장치 → 보조기억장치
예시문제에서 CPU에 가까운 순서로 맞는 것은
캐시 기억장치 → 주 기억장치 → 보조 기억장치

입니다.

RAM과 ROM

RAM = 휘발성, 읽기/쓰기
ROM = 비휘발성, 주로 읽기

플래시 메모리는 전력이 없어도 정보가 보존되므로 휘발성이 아닙니다. 예시문제에서도 “플래시 메모리는 휘발성입니다”가 옳지 않은 설명입니다.


5장 1~2절 압축: 운영체제

운영체제 범위에는 운영체제 개요, 프로세스, 스레드, 스케줄링, 동기화, 세마포어, 교착상태, 메모리 관리, 장치관리, 파일관리, UNIX/Linux가 포함됩니다.

운영체제

운영체제 = 컴퓨터 자원을 관리하고 프로그램 실행 환경을 제공하는 시스템 소프트웨어
관리 대상
CPU
메모리
파일
입출력장치
프로세스

프로그램과 프로세스

프로그램 = 저장된 실행 파일
프로세스 = 실행 중인 프로그램

프로세스 상태

생성
준비
실행
대기
종료
준비 = CPU만 받으면 실행 가능
대기 = 입출력 등 사건을 기다리는 중

PCB

PCB = 운영체제가 프로세스를 관리하기 위한 정보 블록
들어가는 정보
프로세스 ID
상태
PC 값
레지스터 값
메모리 정보
스케줄링 정보
파일 정보

스레드

스레드 = 프로세스 안의 실행 흐름
프로세스 = 자원 소유 단위
스레드 = 실행 단위

스케줄링

CPU를 어떤 프로세스에게 줄지 결정하는 것
알고리즘핵심
FCFS먼저 온 작업 먼저
SJF실행시간 짧은 작업 먼저
SRT남은 시간 짧은 작업 먼저
RR시간 할당량만큼 순환
Priority우선순위 높은 작업 먼저
HRN응답률 높은 작업 먼저

계산 공식

반환시간 = 완료시간 - 도착시간
대기시간 = 반환시간 - 실행시간
HRN 응답률 = (대기시간 + 실행시간) / 실행시간

운영체제 예시문제에서 실행 시간이 2시간씩인 세 작업을 FCFS로 처리하면 완료시간이 2, 4, 6이므로 평균 작업 시간은 (2+4+6)/3 = 4시간입니다.

동기화

동기화 = 여러 프로세스나 스레드의 실행 순서를 조정하는 것

임계영역

임계영역 = 동시에 실행하면 문제가 생기는 공유 자원 접근 코드

세마포어

세마포어 = P, V 연산으로 공유 자원 접근을 제어하는 도구
P = wait = 자원 요청, 값 감소
V = signal = 자원 반납, 값 증가

세마포어 예시문제에서 “경쟁상태를 유도합니다”는 설명은 틀린 설명입니다. 세마포어는 경쟁상태를 막기 위한 도구입니다.

교착상태

교착상태 = 프로세스들이 서로 자원을 기다리며 멈춘 상태
4조건
상호배제
점유와 대기
비선점
환형대기

운영체제 예시문제에서도 교착상태 조건은 mutual exclusion, hold-and-wait, circular wait, no preemption입니다.

단편화

내부 단편화 = 할당받은 공간 안의 낭비
외부 단편화 = 빈 공간이 조각조각 흩어짐

페이징

페이지 = 논리 메모리 조각
프레임 = 물리 메모리 조각
페이지 테이블 = 페이지 번호를 프레임 번호로 바꾸는 표

페이지 교체

알고리즘기준
OPT앞으로 가장 오래 안 쓸 페이지
FIFO가장 먼저 들어온 페이지
LRU가장 오래 사용 안 한 페이지
LFU가장 적게 사용된 페이지

페이지 교체 예시문제에서 가장 이상적인 교체 대상은 이후에 가장 오랫동안 사용되지 않을 페이지입니다.


6장 1절 압축: 객체지향프로그래밍

객체지향 범위에는 클래스, 객체, 메시지와 메소드, 캡슐화, 상속, 다형성, 접근 제한자, 생성자, 소멸자, this, super, 오버로딩, 오버라이딩, 추상 클래스, 인터페이스, 동적 바인딩, 예외 처리가 포함됩니다.

핵심 개념

클래스 = 객체를 만들기 위한 설계도
객체 = 클래스로 만든 실제 대상
멤버변수 = 객체의 상태
메소드 = 객체의 동작

캡슐화와 정보은닉

캡슐화 = 데이터와 기능을 하나로 묶음
정보은닉 = 내부 데이터를 숨김

접근 제한자

private = 클래스 내부
protected = 자식 클래스 등
public = 외부 접근 가능

this와 super

this = 현재 객체 자신
super = 부모 클래스 부분

예시문제에서 Point 클래스의 ( ).x = x; ( ).y = y;에 들어갈 키워드는 this입니다.

오버로딩과 오버라이딩

오버로딩 = 같은 이름, 다른 매개변수
오버라이딩 = 부모 메소드를 자식이 재정의

상속과 다형성

상속 = 부모 클래스의 속성과 기능을 물려받음
다형성 = 같은 명령이 객체에 따라 다르게 동작

다형성은 “하나의 인터페이스를 이용하여 서로 다른 구현 방법을 제공하는 개념”으로 출제됩니다.

StringBuffer

Java에서 상수 문자열은 String, 계속 변하는 문자열은 StringBuffer를 사용합니다. 예시문제의 정답도 StringBuffer입니다.


6장 2~3절 압축: 웹프로그래밍

웹프로그래밍 범위에는 웹 클라이언트, 웹 서버, HTTP, HTML, CSS, JavaScript, BOM, DOM, 이벤트, 예외 처리가 포함됩니다.

웹 구조

클라이언트 → 요청 → 서버
클라이언트 ← 응답 ← 서버
HTTP = 웹에서 요청과 응답을 주고받는 약속

HTML, CSS, JavaScript

HTML = 구조와 내용
CSS = 디자인과 배치
JavaScript = 동작

HTML 핵심 태그

태그의미
a링크
ul, ol, li목록
table, tr, th, td
img이미지
form입력 양식
input입력 요소
select선택 상자
option선택 항목

예시문제에서 <select> 안의 각 선택 항목 태그는 option입니다.

CSS 선택자

선택자의미
*전체 선택자
p태그 선택자
#header아이디 선택자
.box클래스 선택자
h1:hover가상 클래스 선택자

예시문제에서 #header { width: 600px; margin: 0 auto; }아이디 선택자입니다.

예시문제에서 h1:( ) { color : red; }의 빈칸은 hover입니다.

CSS 박스 모델

content
padding
border
margin
padding = 안쪽 여백
margin = 바깥 여백

JavaScript 핵심

var, let, const = 변수 선언
function = 함수
object = { 속성: 값 }
DOM = HTML 문서 조작
BOM = 브라우저 조작
event = 클릭, 입력, 키보드 같은 사건

JavaScript 문자열 함정

올바른 문자열
'ABC'
"ABC"
"점수는 '100점' 이다"
틀린 문자열
"점수는 "100" 이다"

예시문제에서도 이 형태가 올바르지 않은 문자열입니다.

JavaScript 객체 선언

올바른 객체
var customer = { 이름:'홍길동', 나이: 23 };

객체는 { }를 사용하고, 속성과 값은 :로 연결합니다. 예시문제의 정답도 이 형태입니다.


이산수학 추가 핵심

이산수학은 앞의 여러 과목과 겹치지만, 시험 포인트를 따로 정리해야 합니다.

집합

원소가 n개인 집합의 부분집합 개수
2ⁿ
진부분집합 개수
2ⁿ - 1
예시문제에서 원소가 7개이면 진부분집합 개수는
2⁷ - 1 = 128 - 1 = 127

정답은 127입니다.

모순명제

항진명제 = 항상 참
모순명제 = 항상 거짓
대표 모순명제
p ∧ ~p

예시문제에서도 모순명제는 p∧∼p입니다.

관계의 정의역과 치역

관계
R = {(1,2), (1,3), (3,2)}
정의역은 앞에 나온 값
{1, 3}
치역은 뒤에 나온 값
{2, 3}

예시문제의 정답도 정의역 {1,3}, 치역 {2,3}입니다.

역행렬

정방행렬 A가
AB = I

를 만족하면 A는 B의 역행렬입니다. 예시문제의 정답도 역행렬입니다.


시험 직전 최종 암기표

0과 1 계열

개념정답 키워드
10진수 한 자리 표현 필요 비트4비트
2의 보수비트 반전 후 1 더함
4비트 2의 보수 1111-1
AND둘 다 1
OR하나라도 1
XOR서로 다를 때 1
NAND/NOR범용 게이트
플립플롭1비트 저장

C 계열

문제정답
예약어 아닌 것printf
SQ(1+2) with #define SQ(x) x*x5
float 12.5 → int12
배열 인덱스 시작0
문자열 끝'\0'
포인터주소 저장
구조체서로 다른 자료형 묶음

자료구조 계열

개념정답 키워드
ADT자료 + 연산 명세
스택LIFO
FIFO
빈 스택 pop언더플로
완전 이진트리마지막 레벨 왼쪽부터
전위루트-왼쪽-오른쪽
중위왼쪽-루트-오른쪽
후위왼쪽-오른쪽-루트
DFS스택/재귀
BFS
이진 탐색정렬 필요
해싱 충돌서로 다른 키가 같은 주소

컴퓨터구조 계열

개념정답 키워드
시스템 버스데이터, 주소, 제어
시스템 버스 아닌 것로컬버스
명령어연산자 + 피연산자
1주소 명령어AC 사용
0주소 명령어스택 사용
PC다음 명령어 주소
IR현재 명령어
MAR메모리 주소
MBR/MDR메모리 데이터
마이크로 연산CPU 내부 기본 연산
기억장치 계층캐시 → 주기억 → 보조기억

운영체제 계열

개념정답 키워드
프로세스실행 중인 프로그램
준비 상태CPU만 받으면 실행 가능
대기 상태입출력 등 사건 기다림
PCB프로세스 관리 정보
문맥 교환상태 저장 후 다른 프로세스 복원
스레드프로세스 안 실행 흐름
FCFS먼저 온 순서
SJF짧은 작업 먼저
RR시간 할당량
세마포어P/V
교착상태 4조건상호배제, 점유대기, 비선점, 환형대기
페이지 폴트페이지가 RAM에 없음
OPT앞으로 가장 오래 안 쓸 페이지

객체지향·웹 계열

개념정답 키워드
클래스설계도
객체실제 대상
캡슐화데이터+기능 묶음
정보은닉내부 숨김
this현재 객체
super부모
오버로딩같은 이름, 다른 매개변수
오버라이딩부모 메소드 재정의
다형성같은 인터페이스, 다른 구현
HTML구조
CSS디자인
JavaScript동작
optionselect 선택 항목
#header아이디 선택자
hover마우스 올림
DOMHTML 문서 객체 모델
BOM브라우저 객체 모델

최종 시험형 문제

이제 실전처럼 풀어봅니다.

1장·컴퓨터 기초와 이산수학

문제 1

10진법 한 자리를 표현하기 위해 필요한 최소 2진수 자릿수는?

① 2비트 ② 4비트 ③ 8비트 ④ 10비트


문제 2

4비트 2의 보수에서 0101의 음수 표현은?

① 0101 ② 1010 ③ 1011 ④ 1111


문제 3

다음 중 모순명제는?

p → p(p∧(p→q))→q~(p∨q)→(~p→~q)p∧~p


문제 4

다음 중 시스템 버스를 구성하는 것으로 보기 어려운 것은?

① 주소버스 ② 데이터버스 ③ 로컬버스 ④ 제어버스


문제 5

CPU에 가까운 기억장치 계층 순서로 알맞은 것은?

① 주기억장치 → 보조기억장치 → 캐시 ② 보조기억장치 → 주기억장치 → 캐시 ③ 캐시 → 주기억장치 → 보조기억장치 ④ 캐시 → 보조기억장치 → 주기억장치


2장·C프로그래밍

문제 6

다음 C 코드의 출력 결과는?

#define SQ(x) x*x

void main() {
    printf("%d", SQ(1+2));
}

① 0 ② 5 ③ 6 ④ 9


문제 7

다음 C 코드의 출력 결과는?

float k = 12.5;
int j;
j = k;
printf("%d", j);

① 12 ② 13 ③ 12.5 ④ 12.5000


문제 8

다음 코드의 출력 결과는?

int moon[] = {1,2,3,4,5,6,7,8,9,10};
int a, sum = 0;

for(a=0; a<8; ++a)
    if(moon[a] % 2 == 0)
        sum += moon[a];

printf("%d", sum);

① 12 ② 16 ③ 20 ④ 30


3장·자료구조

문제 9

자료의 집합과 이에 대한 연산 집합에 대한 명세를 무엇이라고 하는가?

① 알고리즘 ② 자료형 ③ 추상화 집합 ④ 추상 자료형


문제 10

스택에서 비어 있는 상태에 삭제 연산을 수행하려 할 때 발생하는 것은?

① 오버플로 ② 언더플로 ③ 캐시 히트 ④ 페이지 폴트


문제 11

중위표기식 A/B**C-D*(E+F)/G의 후위표기식은?

-/A**BC/*D+EFGABC**/DEF+*G/-A/B**C-D*E+F/GA/BC**D*EF+G/-


문제 12

다음 설명에 해당하는 이진트리는?

마지막 레벨을 제외한 모든 레벨이 채워져 있고,
마지막 레벨은 왼쪽부터 오른쪽으로 채워진 이진트리

① 불완전 이진트리 ② 완전 이진트리 ③ 포화 이진트리 ④ 불포화 이진트리


문제 13

DFS와 BFS에 주로 사용되는 자료구조 연결로 알맞은 것은?

① DFS-큐, BFS-스택 ② DFS-스택, BFS-큐 ③ DFS-해시, BFS-트리 ④ DFS-배열, BFS-포인터


4장·컴퓨터구조

문제 14

다음 명령어들이 계산하는 식은?

LOAD A
ADD B
MUL C
STORE T
LOAD D
MUL E
ADD T

A+B+C+D+E(A+B)*C+D*EA*B+C*D+E(A*B)+(C*D)+E


문제 15

현재 실행 중인 명령어를 저장하는 레지스터는?

① PC ② IR ③ MAR ④ MBR


문제 16

다음에 실행할 명령어의 주소를 저장하는 레지스터는?

① PC ② IR ③ AC ④ MDR


문제 17

CPU 내부에서 제어장치에 의해 실행되는 가장 기본 단위의 연산은?

① 비트 연산 ② 제어이동 연산 ③ 산술논리 연산 ④ 마이크로 연산


5장·운영체제

문제 18

실행 중인 프로그램을 무엇이라고 하는가?

① 파일 ② 프로세스 ③ 클래스 ④ 태그


문제 19

프로세스가 CPU만 받으면 바로 실행 가능한 상태는?

① 준비 상태 ② 대기 상태 ③ 종료 상태 ④ 생성 상태


문제 20

FCFS 정책에서 실행 시간이 2시간씩인 세 작업이 동시에 주어질 때 평균 작업 시간은?

① 2시간 ② 3시간 ③ 4시간 ④ 6시간


문제 21

세마포어에 대한 설명으로 적절하지 않은 것은?

① 상호배제를 위해 사용합니다 ② P, V 연산을 사용합니다 ③ 임계영역을 보호합니다 ④ 경쟁상태를 유도합니다


문제 22

교착상태 발생 조건으로 올바른 묶음은?

① 상호배제, 점유와 대기, 환형대기, 비선점 ② 임계영역, 바쁜대기, 캐시미스, 페이지폴트 ③ 세마포어, 모니터, 메시지전달, CSS ④ FIFO, LIFO, DFS, BFS


문제 23

다중 프로그래밍 환경에서 메모리 보호를 위해 사용되는 레지스터는?

① 경계 레지스터 ② 프로그램 카운터 ③ 범용 레지스터 ④ 누산기


문제 24

페이지 교체 기법에서 가장 이상적인 교체 대상은?

① 참조된 횟수가 가장 적은 페이지 ② 주기억장치에 가장 오래 있었던 페이지 ③ 이전에 가장 오랫동안 사용되지 않은 페이지 ④ 이후에 가장 오랫동안 사용되지 않을 페이지


6장 1절·객체지향

문제 25

객체지향의 주요 개념을 설명한 것 중 거리가 먼 것은?

① 다형성은 하나의 인터페이스로 서로 다른 구현을 제공합니다 ② 객체는 클래스와 메소드로 구성된다는 표현이 정확합니다 ③ 상속은 코드 재사용에 도움을 줍니다 ④ 캡슐화는 정보은닉과 관련됩니다


문제 26

다음 빈칸에 공통으로 들어갈 Java 키워드는?

class Point {
    int x, y;

    public void Point(int x, int y) {
        (   ).x = x;
        (   ).y = y;
    }
}

① this ② that ③ Point ④ super


문제 27

Java에서 계속 변하는 문자열을 사용할 때 적합한 클래스는?

① StringSet ② StringBuffer ③ StringList ④ StringFormat


6장 2절·웹프로그래밍

문제 28

HTML에서 <select> 안의 각 선택 항목을 나타내는 태그는?

① li ② td ③ item ④ option


문제 29

다음 CSS에서 사용된 선택자의 종류는?

#header {
    width: 600px;
    margin: 0 auto;
}

① 태그 선택자 ② 아이디 선택자 ③ 클래스 선택자 ④ 전체 선택자


문제 30

다음 빈칸에 들어갈 단어는?

h1:(      ) {
    color: red;
}

마우스 커서가 h1 위로 올라갈 때 적용하려고 합니다.

① active ② hover ③ focus ④ enabled


6장 3절·JavaScript

문제 31

다음 중 JavaScript 문자열로 올바르지 않은 것은?

'ABC'"ABC""점수는 '100점' 입니다""점수는 "100점" 입니다"


문제 32

다음 중 JavaScript 객체 선언으로 올바른 것은?

var customer = { 이름:'홍길동', 나이: 23 };var customer = { 이름='홍길동', 나이=23 };var customer = [ 이름:'홍길동', 나이: 23 ];var customer = [ 이름='홍길동', 나이=23 ];


이산수학 추가 핵심

문제 33

원소가 7개인 집합 X의 진부분집합 개수는?

① 64 ② 126 ③ 127 ④ 128


문제 34

관계 R={(1,2), (1,3), (3,2)}의 정의역과 치역으로 알맞은 것은?

① 정의역 {1,3}, 치역 {1,3} ② 정의역 {1,3}, 치역 {2,3} ③ 정의역 {1,2,3}, 치역 {1,3} ④ 정의역 {1,2,3}, 치역 {1,2,3}


문제 35

정방행렬 A가 AB=I를 만족할 때 A는 B의 무슨 행렬인가?

① 역행렬 ② 전치행렬 ③ 대각행렬 ④ 정방행렬


정답과 해설은 절별 확인문제 정답해설에서 확인합니다.

마지막 정리

이제 7장 1절 압축 수업은 마무리합니다.

시험 직전에는 전체를 다시 처음부터 읽기보입니다, 이 순서로 복습합니다.

1. 최종 암기표
2. 각 과목별 함정 문제
3. C 코드 실행 결과
4. 트리 순회, 후위표기식
5. 스케줄링과 페이지 교체
6. HTML/CSS/JavaScript 문법 문제

가장 점수로 잘 이어지는 부분은 다음과 같습니다.

C 코드 추적
자료구조 스택/큐/트리/그래프
컴퓨터구조 버스/명령어/레지스터
운영체제 스케줄링/세마포어/교착상태/페이징
웹 태그/CSS 선택자/JavaScript 객체

최종 한 문장: 8과목은 따로 외우는 과목이 아니라, 컴퓨터가 데이터를 표현하고 처리하고 저장하고 관리하고 프로그래밍하고 사용자에게 보여주는 전체 흐름을 나눈 것입니다.

목차

전체 지도 다시 보기
1장 1~4절 압축: 진법, 논리, 논리회로
반드시 기억할 것
진법 핵심
2의 보수 핵심
논리 핵심
드모르간 법칙
조합논리회로와 순서논리회로
2장 1~4절 압축: C프로그래밍
반드시 기억할 것
C 기본 구조
자료형
scanf 주의
시험 혼동 포인트 1: printf는 예약어가 아닙니다
시험 혼동 포인트 2: 매크로는 단순 치환
시험 혼동 포인트 3: 실수에서 정수로 바꾸면 소수점 버림
배열 핵심
배열 예시문제 핵심
포인터 핵심
구조체 핵심
3장 1~4절 압축: 자료구조
자료구조와 알고리즘
추상 자료형, ADT
시간복잡도
배열
스택
후위표기식
연결리스트
트리
완전 이진트리
이진트리 순회
그래프
정렬
해싱
4장 1~2절 압축: 컴퓨터구조
컴퓨터 기본 구성
시스템 버스
명령어
주소 수별 명령어
주소 지정 방식
AC 추적 문제
CPU 구성
주요 레지스터
인출 사이클
기억장치 계층
RAM과 ROM
5장 1~2절 압축: 운영체제
운영체제
프로그램과 프로세스
프로세스 상태
PCB
스레드
스케줄링
계산 공식
동기화
임계영역
세마포어
교착상태
단편화
페이징
페이지 교체
6장 1절 압축: 객체지향프로그래밍
핵심 개념
캡슐화와 정보은닉
접근 제한자
this와 super
오버로딩과 오버라이딩
상속과 다형성
StringBuffer
6장 2~3절 압축: 웹프로그래밍
웹 구조
HTML, CSS, JavaScript
HTML 핵심 태그
CSS 선택자
CSS 박스 모델
JavaScript 핵심
JavaScript 문자열 함정
JavaScript 객체 선언
이산수학 추가 핵심
집합
모순명제
관계의 정의역과 치역
역행렬
시험 직전 최종 암기표
0과 1 계열
C 계열
자료구조 계열
컴퓨터구조 계열
운영체제 계열
객체지향·웹 계열
최종 시험형 문제
1장·컴퓨터 기초와 이산수학
문제 1
문제 2
문제 3
문제 4
문제 5
2장·C프로그래밍
문제 6
문제 7
문제 8
3장·자료구조
문제 9
문제 10
문제 11
문제 12
문제 13
4장·컴퓨터구조
문제 14
문제 15
문제 16
문제 17
5장·운영체제
문제 18
문제 19
문제 20
문제 21
문제 22
문제 23
문제 24
6장 1절·객체지향
문제 25
문제 26
문제 27
6장 2절·웹프로그래밍
문제 28
문제 29
문제 30
6장 3절·JavaScript
문제 31
문제 32
이산수학 추가 핵심
문제 33
문제 34
문제 35
마지막 정리