Skip to content

Commit 065e4d4

Browse files
committed
docs: 자료 구조 1
- 자료구조의 개념과 중요성, 그리고 컴퓨터 내부에서의 자료 표현 방식을 설명합니다.
1 parent 459f1f1 commit 065e4d4

File tree

2 files changed

+122
-0
lines changed

2 files changed

+122
-0
lines changed

docs/자료구조/01.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
sidebar_position: 1
3+
title: 자료구조의 이해
4+
description: 자료구조의 개념과 중요성, 그리고 컴퓨터 내부에서의 자료 표현 방식을 설명합니다.
5+
---
6+
7+
## 1. 자료구조란 무엇인가?
8+
9+
**자료구조**는 컴퓨터 프로그램을 통해 문제를 해결하는 과정에서 정보를 효율적으로 표현하고 구성 및 활용하는 기법을 학습하는 교과목입니다. 이는 자료를 효율적으로 표현하고 저장하며 처리할 수 있도록 정리하는 것을 의미합니다.
10+
11+
- **핵심 목적**: 컴퓨터 프로그램의 성능은 효율적인 자료구조와 이에 따른 알고리즘으로 구성되므로, 컴퓨터 프로그래머 및 개발자로 성장하기 위한 중요한 교과목입니다
12+
- **학습 내용**: 리스트, 스택, 큐, 트리, 그래프 등 다양한 자료구조를 이해하고, 이와 관련된 선택, 탐색 및 정렬 문제와 그 효율성 및 해석 기법을 공부합니다
13+
14+
## 2. 과목의 주요 특징 및 수업 내용
15+
16+
자료구조와 알고리즘을 함께 학습하며, 이론과 실습을 병행하여 문제 해결 능력을 향상시키는 데 중점을 둡니다.
17+
18+
- **이론 및 실습 병행**: 자주 사용하는 자료구조의 핵심 알고리즘으로 설계한 후 이를 C 프로그램으로 구현하면서 이론과 실습을 병행함
19+
- **문제 해결 능력 향상**: 자료구조를 활용한 문제 해결 능력 향상을 위한 수업 방식을 채택합니다
20+
- **실습 환경**: Visual Studio 2019 Community 버전을 사용합니다
21+
22+
### 주요 학습 주제
23+
24+
- **자료구조와 알고리즘 이해를 위한 기본 지식 및 C 프로그래밍 기법**
25+
26+
- **순차 자료구조**: 자료의 논리적 순서와 물리적 저장 순서가 일치하는 표현 방법을 학습합니다
27+
28+
- 예: 배열을 이용한 리스트, 스택, 큐, 데크, 트리, 그래프 구현
29+
30+
- **연결 자료구조**: 물리적 순서를 고려하지 않고 논리적 순서대로 연결하여 자료를 구성하는 표현 방법을 알아봅니다
31+
32+
- 예: 포인터를 이용한 리스트, 스택, 큐, 데크, 트리, 그래프 구현
33+
34+
- **다양한 자료구조**: 스택, 큐 (선형), 트리 (1:n 계층형), 그래프 (m:n 관계)의 특징과 연산 방법을 학습합니다
35+
36+
- **자료 응용**: 정렬 및 검색 알고리즘을 살펴보고 구현합니다
37+
- **정렬**: 선택, 버블, 퀵, 삽입, 셸, 병합, 기수, 힙, 트리 정렬
38+
- **검색**: 순차, 이진, 이진 트리 검색, 해싱
39+
40+
## 3. 자료의 표현 방식
41+
42+
컴퓨터 내부에서 자료를 표현하는 다양한 방법을 학습합니다. 모든 형식의 자료는 2진수 코드로 표현되어 저장 및 처리됩니다.
43+
44+
- **2진수 코드의 단위**: 1비트, 1니블 (4비트), 1바이트 (8비트)
45+
- **n비트 표현**: n개의 비트로 $2^n$개의 상태를 표현할 수 있습니다
46+
47+
### 3.1. 수치 자료의 표현
48+
49+
#### 10진수 표현
50+
51+
- **존(zone) 형식**: 10진수 한 자리를 1바이트(8비트)로 표현하며, 상위 4비트는 존 영역(1111)으로, 하위 4비트는 수치 영역으로 사용합니다. 마지막 자리의 존 영역에 부호(양수: 1100, 음수: 1101)를 표시합니다
52+
- **팩(pack) 형식**: 10진수 한 자리를 4비트로 표현하며, 최하위 4비트에 부호(양수: 1100, 음수: 1101)를 표시합니다
53+
54+
#### 2진수 정수 표현
55+
56+
- **부호 절댓값 형식**: 최상위 1비트는 부호(0: 양수, 1: 음수)를, 나머지 n-1비트는 절댓값을 표시합니다
57+
- **1의 보수(1' complement) 형식**: 음수를 표현할 때 부호 비트 대신 1의 보수를 사용합니다. 양수 표현은 부호 절댓값과 같으며, 음수의 첫 비트는 1이 됩니다. (A-B) 뺄셈을 (A+(B의 1의 보수))로 변환하여 계산할 수 있습니다
58+
- **2의 보수(2' complement) 형식**: 음수를 표현할 때 2의 보수를 사용합니다. 컴퓨터 시스템에서 실제로 사용하는 형식입니다. (A-B) 뺄셈을 (A+(B의 2의 보수))로 변환하여 계산할 수 있으며, 덧셈 연산에서 오버플로 처리가 1의 보수 형식보다 간단합니다
59+
60+
#### 2진수 실수 표현
61+
62+
- **고정 소수점 표현**: 소수점이 항상 최상위 비트의 왼쪽 밖에 고정되어 있는 것으로 취급합니다
63+
- **부동 소수점 표현**: 고정 소수점 형식에 비해 표현 가능한 값의 범위가 넓으며, 실수를 소수부, 지수, 밑수로 구분하여 표현합니다
64+
65+
### 3.2. 문자 자료의 표현
66+
67+
문자에 대한 이진수 코드를 정의하여 사용합니다.
68+
69+
- **BCD 코드**: 6비트를 사용하여 문자를 표현합니다. 상위 2비트는 존 비트, 하위 4비트는 2진수 비트로 구성됩니다
70+
- **EBCDIC 코드**: 8비트를 사용하여 문자를 표현합니다. 상위 4비트는 존 비트, 하위 4비트는 2진수 비트로 구성됩니다
71+
- **ASCII 코드**: 7비트를 사용하여 문자를 표현합니다. 상위 3비트는 존 비트, 하위 4비트는 2진수 비트로 구성됩니다
72+
- **유니코드**: 세계 여러 나라의 언어를 통일된 방법으로 표현할 수 있도록 정의한 국제 표준 코드(ISO/IEC 10646)입니다. 2바이트를 조합하여 하나의 글자를 표현함으로써 다양한 언어를 지원하며, 현재 인터넷 기반 프로그램과 제품에 일반화되어 사용됩니다
73+
74+
### 3.3. 논리 자료의 표현
75+
76+
논리값(참/거짓, 1/0)을 표현하기 위한 자료 형식입니다. 1바이트를 사용하여 표현하며, 참은 최하위 비트 1 또는 전체 비트 1, 거짓은 전체 비트 0 등으로 정의할 수 있습니다.
77+
78+
### 3.4. 포인터 자료의 표현
79+
80+
메모리의 주소를 표현하기 위한 자료 형식입니다. 변수의 주소나 메모리의 특정 위치에 대한 주소를 저장하고 주소 연산에 사용됩니다.
81+
82+
### 3.5. 문자열 자료의 표현
83+
84+
여러 문자로 이루어진 문자의 그룹을 하나의 자료로 취급하여 메모리에 연속적으로 저장하는 자료 형식입니다. 부분 문자열을 표현하는 방법에는 세 가지가 있습니다.
85+
86+
1. **구분자를 사용하는 방법**: 부분 문자열 사이에 구분자를 사용하며, 메모리 이용률은 효율적이나 탐색 시간은 비효율적입니다
87+
2. **고정 길이를 사용하는 방법**: 가장 긴 문자열 길이에 맞춰 고정 길이로 저장하며, 메모리 이용률은 비효율적이나 탐색 시간은 효율적입니다
88+
3. **포인터를 사용하는 방법**: 부분 문자열을 연속 저장하고 각 부분 문자열에 대한 포인터를 사용하며, 메모리 이용률과 탐색 시간 모두 효율적입니다
89+
90+
## 4. 자료의 추상화
91+
92+
추상화는 크고 복잡한 문제를 단순화시켜 쉽게 해결하기 위한 방법입니다.
93+
94+
### 자료 추상화 (data abstraction)
95+
96+
처리할 자료, 연산, 자료형에 대한 추상화 표현을 의미합니다.
97+
98+
- **자료**: 프로그램의 처리 대상이 되는 모든 것
99+
- **연산**: 어떤 일을 처리하는 과정으로, 연산자에 의해 수행됩니다
100+
- **자료형**: 처리할 자료의 집합과 자료에 대해 수행할 연산자의 집합입니다
101+
- 예: 정수 자료형 - 정수의 집합과 +, -, x, ÷, mod 연산자 집합
102+
103+
### 추상 자료형 (ADT, Abstract Data Type)
104+
105+
자료와 연산자의 특성을 논리적으로 추상화하여 정의한 자료형입니다.
106+
107+
- **추상화**: "무엇(what)인가?"를 논리적으로 정의하는 단계입니다
108+
- **구체화**: "어떻게(how) 할 것인가?"를 실제적으로 표현하는 단계입니다
109+
110+
> **참고**: 자료와 연산에 있어서 추상화는 '추상 자료형'과 '알고리즘 정의'에 해당하며, 구체화는 '자료형'과 '프로그램 구현'에 해당합니다
111+
112+
## 실습 툴 설치 및 활용
113+
114+
Visual Studio 2019 Community를 활용하여 실습 환경을 구축하고 C 언어로 자료구조 및 알고리즘을 구현합니다.

docs/자료구조/_cateogy_.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "자료구조",
3+
"position": 8,
4+
"link": {
5+
"type": "generated-index",
6+
"description": "프로그램은 많은 자료들로 이루어져 이러한 자료를 효율적으로 관리하기 위해 자료구조를 학습합니다."
7+
}
8+
}

0 commit comments

Comments
 (0)