전체 통합 복습과 시험형 문제풀이
통합 복습 학습 절입니다.
마지막 절에서는 전체 범위를 통합 복습합니다.
지금까지 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 | 서로 다를 때 |
| NAND | AND 후 NOT | AND의 반대 |
| NOR | OR 후 NOT | OR의 반대 |
드모르간 법칙
반드시 암기합니다.
(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;| 표현 | 의미 |
|---|---|
a | a의 값 |
&a | a의 주소 |
p | a의 주소 |
*p | p가 가리키는 곳의 값 |
*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 = 삭제언더플로자료구조 예시문제에서도 top ≤ 0일 때 처리해야 하는 것은 언더플로 처리입니다.
큐
FIFO = First In First Out
먼저 들어온 것이 먼저 나감enqueue = 삽입
dequeue = 삭제후위표기식
중위: A + B
후위: A B +A/B**C-D*(E+F)/GABC**/DEF+*G/-자료구조 예시문제의 정답도 이 형태입니다.
연결리스트
연결리스트 = 노드들을 포인터로 연결한 구조
노드 = 데이터 + 링크배열과 비교는 다음과 같습니다.
| 구분 | 배열 | 연결리스트 |
|---|---|---|
| 접근 | 빠름, O(1) | 느림, O(n) |
| 삽입/삭제 | 밀거나 당김 | 포인터 변경 |
| 저장 | 연속 공간 | 흩어진 공간 연결 |
트리
트리 = 부모-자식 관계를 가진 계층 구조
루트 = 가장 위 노드
단말노드 = 자식 없는 노드완전 이진트리
마지막 레벨을 제외하고 모두 채워져 있고,
마지막 레벨은 왼쪽부터 채워진 이진트리자료구조 예시문제에서도 이 설명의 정답은 완전 이진트리입니다.
이진트리 순회
| 순회 | 순서 |
|---|---|
| 전위 | 루트 → 왼쪽 → 오른쪽 |
| 중위 | 왼쪽 → 루트 → 오른쪽 |
| 후위 | 왼쪽 → 오른쪽 → 루트 |
A
/ \
B C
/ /
D ED B E C A자료구조 예시문제의 후위순회 정답도 DBECA입니다.
그래프
그래프 = 정점 + 간선
DFS = 스택 또는 재귀
BFS = 큐| 탐색 | 자료구조 | 특징 |
|---|---|---|
| DFS | 스택/재귀 | 깊게 먼저 |
| BFS | 큐 | 가까운 곳 먼저 |
정렬
버블 = 이웃 비교
선택 = 최솟값 선택
삽입 = 알맞은 위치에 끼워 넣기
퀵 = 피벗 기준 분할
합병 = 나누고 합치기
힙 = 힙 이용
기수 = 자리수 기준해싱
해싱 = 키를 해시 함수에 넣어 저장 위치 계산
충돌 = 서로 다른 키가 같은 주소로 감
체이닝 = 충돌 데이터를 연결리스트로 연결4장 1~2절 압축: 컴퓨터구조
컴퓨터구조 범위에는 컴퓨터 기본구조, 시스템 버스, 디지털 논리회로, 진법과 보수, 명령어, CPU, 제어장치, 기억장치, 입출력, 고성능 컴퓨터가 포함됩니다.
컴퓨터 기본 구성
CPU
기억장치
입력장치
출력장치시스템 버스
데이터버스 = 실제 데이터 이동
주소버스 = 위치 주소 이동
제어버스 = 읽기/쓰기 같은 제어신호 이동예시문제에서 시스템 버스 구성요소가 아닌 것은 로컬버스입니다.
명령어
명령어 = 연산자 + 피연산자ADD BADD = 연산자
B = 피연산자주소 수별 명령어
| 형식 | 핵심 |
|---|---|
| 3주소 | 결과, 입력1, 입력2 |
| 2주소 | 왼쪽 피연산자에 결과 저장 |
| 1주소 | AC 누산기 사용 |
| 0주소 | 스택 사용 |
주소 지정 방식
즉치 = 값 자체
직접 = 주소
간접 = 주소의 주소
묵시적 = 안 써도 정해짐
레지스터 = 레지스터 값
레지스터 간접 = 레지스터 안의 주소
변위 = 기준 주소 + 거리AC 추적 문제
LOAD A
ADD B
MUL C
STORE T
LOAD D
MUL E
ADD TAC = 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 ← MBRPC → MAR → 메모리 → MBR → IR기억장치 계층
레지스터 → 캐시 → 주기억장치 → 보조기억장치캐시 기억장치 → 주 기억장치 → 보조 기억장치입니다.
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 = 자원 반납, 값 증가세마포어 예시문제에서 “경쟁상태를 유도합니다”는 설명은 틀린 설명입니다. 세마포어는 경쟁상태를 막기 위한 도구입니다.
교착상태
교착상태 = 프로세스들이 서로 자원을 기다리며 멈춘 상태상호배제
점유와 대기
비선점
환형대기운영체제 예시문제에서도 교착상태 조건은 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
marginpadding = 안쪽 여백
margin = 바깥 여백JavaScript 핵심
var, let, const = 변수 선언
function = 함수
object = { 속성: 값 }
DOM = HTML 문서 조작
BOM = 브라우저 조작
event = 클릭, 입력, 키보드 같은 사건JavaScript 문자열 함정
'ABC'
"ABC"
"점수는 '100점' 이다""점수는 "100점" 이다"예시문제에서도 이 형태가 올바르지 않은 문자열입니다.
JavaScript 객체 선언
var customer = { 이름:'홍길동', 나이: 23 };객체는 { }를 사용하고, 속성과 값은 :로 연결합니다. 예시문제의 정답도 이 형태입니다.
이산수학 추가 핵심
이산수학은 앞의 여러 과목과 겹치지만, 시험 포인트를 따로 정리해야 합니다.
집합
2ⁿ2ⁿ - 12⁷ - 1 = 128 - 1 = 127정답은 127입니다.
모순명제
항진명제 = 항상 참
모순명제 = 항상 거짓p ∧ ~p예시문제에서도 모순명제는 p∧∼p입니다.
관계의 정의역과 치역
R = {(1,2), (1,3), (3,2)}{1, 3}{2, 3}예시문제의 정답도 정의역 {1,3}, 치역 {2,3}입니다.
역행렬
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*x | 5 |
float 12.5 → int | 12 |
| 배열 인덱스 시작 | 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 | 동작 |
option | select 선택 항목 |
#header | 아이디 선택자 |
hover | 마우스 올림 |
| DOM | HTML 문서 객체 모델 |
| 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+EFG
② ABC**/DEF+*G/-
③ A/B**C-D*E+F/G
④ A/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*E
③ A*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과목은 따로 외우는 과목이 아니라, 컴퓨터가 데이터를 표현하고 처리하고 저장하고 관리하고 프로그래밍하고 사용자에게 보여주는 전체 흐름을 나눈 것입니다.