자료구조의 이해
1. 자료구조란 무엇인가?
자료구조는 컴퓨터 프로그램을 통해 문제를 해결하는 과정에서 정보를 효율적으로 표현하고 구성 및 활용하는 기법을 학습하는 교과목입니다. 이는 자료 를 효율적으로 표현하고 저장하며 처리할 수 있도록 정리하는 것을 의미합니다.
- 핵심 목적: 컴퓨터 프로그램의 성능은 효율적인 자료구조와 이에 따른 알고리즘으로 구성되므로, 컴퓨터 프로그래머 및 개발자로 성장하기 위한 중요한 교과목입니다
- 학습 내용: 리스트, 스택, 큐, 트리, 그래프 등 다양한 자료구조를 이해하고, 이와 관련된 선택, 탐색 및 정렬 문제와 그 효율성 및 해석 기법을 공부합니다
2. 과목의 주요 특징 및 수업 내용
자료구조와 알고리즘을 함께 학습하며, 이론과 실습을 병행하여 문제 해결 능력을 향상시키는 데 중점을 둡니다.
- 이론 및 실습 병행: 자주 사용하는 자료구조의 핵심 알고리즘으로 설계한 후 이를 C 프로그램으로 구현하면서 이론과 실습을 병행함
- 문제 해결 능력 향상: 자료구조를 활용한 문제 해결 능력 향상을 위한 수업 방식을 채택합니다
- 실습 환경: Visual Studio 2019 Community 버전을 사용합니다
주요 학습 주제
-
자료구조와 알고리즘 이해를 위한 기본 지식 및 C 프로그래밍 기법
-
순차 자료구조: 자료의 논리적 순서와 물리적 저장 순서가 일치하는 표현 방법을 학습합니다
- 예: 배열을 이용한 리스트, 스택, 큐, 데크, 트리, 그래프 구현
-
연결 자료구조: 물리적 순서를 고려하지 않고 논리적 순서대로 연결하여 자료를 구성하는 표현 방법을 알아봅니다
- 예: 포인터를 이용한 리스트, 스택, 큐, 데크, 트리, 그래프 구현
-
다양한 자료구조: 스택, 큐 (선형), 트리 (1:n 계층형), 그래프 (m:n 관계)의 특징과 연산 방법을 학습합니다
-
자료 응용: 정렬 및 검색 알고리즘을 살펴보고 구현합니다
- 정렬: 선택, 버블, 퀵, 삽입, 셸, 병합, 기수, 힙, 트리 정렬
- 검색: 순차, 이진, 이진 트리 검색, 해싱
3. 자료의 표현 방식
컴퓨터 내부에서 자료를 표현하는 다양한 방법을 학습합니다. 모든 형식의 자료는 2진수 코드로 표현되어 저장 및 처리됩니다.
- 2진수 코드의 단위: 1비트, 1니블 (4비트), 1바이트 (8비트)
- n비트 표현: n개의 비트로 $2^n$개의 상태를 표현할 수 있습니다
3.1. 수치 자료의 표현
10진수 표현
- 존(zone) 형식: 10진수 한 자리를 1바이트(8비트)로 표현하며, 상위 4비트는 존 영역(1111)으로, 하위 4비트는 수치 영역으로 사용합니다. 마지막 자리의 존 영역에 부호(양수: 1100, 음수: 1101)를 표시합니다
- 팩(pack) 형식: 10진수 한 자리를 4비트로 표현하며, 최하위 4비트에 부호(양수: 1100, 음수: 1101)를 표시합니다
2진수 정수 표현
- 부호 절댓값 형식: 최상위 1비트는 부호(0: 양수, 1: 음수)를, 나머지 n-1비트는 절댓값을 표시합니다
- 1의 보수(1' complement) 형식: 음수를 표현할 때 부호 비트 대신 1의 보수를 사용합니다. 양수 표현은 부호 절댓값과 같으며, 음수의 첫 비트는 1이 됩니다. (A-B) 뺄셈을 (A+(B의 1의 보수))로 변환하여 계산할 수 있습니다
- 2의 보수(2' complement) 형식: 음수를 표현할 때 2의 보수를 사용합니다. 컴퓨터 시스템에서 실제로 사용하는 형식입니다. (A-B) 뺄셈을 (A+(B의 2의 보수))로 변환하여 계산할 수 있으며, 덧셈 연산에서 오버플로 처리가 1의 보수 형식보다 간단합니다