CS/자료구조

    2주차(4) - 데이터 구조를 공부하기 위한 C++의 Class의 기본개념

    C++ 언어는 일반 C언어와 달리 Class라는 개념을 지원하는 데 Class에 대해서 알아보기 전에 먼저 Structure의 개념에 대해서 먼저 알아보는 것으로 하겠다. Structures 여러 종류의 Data Type을 하나로 묶어놓은 것 (Compound Data Type) 실제로 우리가 사용하는 수많은 정보 시스템들은 그 내부의 근간이 데이터 베이스(DB)를 유지하고 있다. 즉, 실세계에서 존재하는 데이터들을 잘 저장해놓고 필요에 따라 이를 조회해서 보여줄 수 있는 시스템을 구상할 때 이에 대한 가장 기본적인 배경이 되는 것이 바로 Structure Type 이다. 즉, 우리가 어떤 프로그램으로 표현하고자 하는 대상물을 하나의 분류로 정해놓고 그 분류가 갖는 속성을 표현하는 것을 Structure..

    2주차(3) - ADT

    ADT(= Abstract Data Type) Data Type 1. 어떤 데이터의 집합 2. 그 데이터에 적용할 수 있는 연산의 집합 여기서 중요한 점은 Data Type이라는 개념이 단지 어떤 데이터의 집합만을 의미하는 것이 아니라 해당 데이터에 적용할 수 있는 연산의 집합까지도 함께 포함하는 개념이라는 것이다. 그렇기 때문에 어떤 Data Type을 정의할 때에는 단순히 어떤 데이터의 집합인 지만을 명시하는 것이 아니라 해당 Data Type에 적용할 수 있는 연산의 종류들도 함께 정의해 주어야함을 의미한다. 즉, 해당 Data Type에 적용할 수 있는 연산에 대한 정의도 Data Type에 대한 정의의 일부이다. Data Structure 데이터를 어떠한 규칙에 의해서 모아놓은 것 Data St..

    2주차(2) - Stack(1)

    Stack LIFO(Last In First Out)의 특성을 갖는 linear list 여기서 LIFO라는 표현은 'Last In First Out'의 줄임말로서 가장 마지막에 들어간 원소가 가장 먼저 나오는 형태의 구조를 가진 선형 자료구조를 말한다. 즉, stack은 사람들이 한 줄로만 탑승할 수 있으며, 앞문으로만 내릴 수 있는 버스를 생각하면 된다. Stack에 적용하는 2가지 연산 해당 용어들은 stack에만 적용되는 전용 용어라고 봐도 무방하다. 1. push 2. pop 1. push (= insert) stack에 한 개의 원소를 저장하는 연산 2. pop (= delete) stack으로부터 한 개의 원소를 추출하는 연산 즉, Stack으로부터 원소를 추출하면(pop 연산), 그 원소가..

    2주차(1) - 알고리즘의 성능분석

    알고리즘의 성능분석을 공부하는 이유? 우리가 프로그램을 개발함에 있어서 사용하거나 구상하게 되는 알고리즘은 지정된 범위 내에서 오류없이 잘 동작함을 보장함과 동시에 좋은 성능을 보여줘야 하기 때문이다. 또한 동일한 목표를 구현한 다양한 알고리즘들은 각자 다른 특징과 성능을 가지게 되는데, 이는 개발의 목적과 상황에 따라서 적절하게 선택되어야 하기 때문에 이를 위해서는 알고리즘의 성능평가를 적절하게 수행할 수 있어야 한다. 알고리즘 성능평가 시 고려되는 두 가지 요소 1. 시간 복잡도 (Time complexity) 2. 공간 복잡도 (Space complexity) 시간 복잡도 (Time complexity) 알고리즘의 수행(실행)시간에 대한 분석, 효율성을 평가하는 척도 공간 복잡도 (Space com..

    1주차(2) - 데이터 구조 학습을 위한 C++ 언어 기초

    여러가지 데이터 구조를 구현해보고 이를 실습하기 위해서는 C++ 언어에 대해서 어느정도 알아야할 필요성이 있음. C++ 언어의 특징 1. 객체지향적임. (객체지향 언어의 장점을 수용, C + OOP) 2. 기존 C언어의 모든 특징을 포함하는 언어임 (기존 C언어 프로그램과 호환) 3. 사용자가 정의하는 data type에 대한 특징을 지원함 (= class를 지원함) 4. 대규모 프로그래밍에 적합한 특징을 지원함. 5. 유용한 데이터 구조와 알고리즘을 지원하는 standard library를 지원함. C++ 프로그램의 기본 구조 기본적인 standard input/output 명령을 수행하기 위해서는 아래와 같은 기본적인 구성을 갖춰야 한다. #include using namespace std; int ..

    1주차(1) - 알고리즘과 데이터 구조 개요

    데이터 구조 (Data Structure) Data Structure와 Algorithm의 기본 개념을 이해하고, 이를 활용하여 Software를 개발할 수 있는 능력을 갖추는 것을 목표로 하는 학문 Software 개발의 단계 소프트웨어는 일반적으로 다음 4가지의 과정으로 개발된다. 1. 요구사항 분석 2. 설계 3. 구현 4. 검증 1. Requirement Analysis (요구사항 분석) 문제의 요구사항, 입출력의 형식 및 내용들을 정의하고 분석 2. Design (설계) 개념적인 구성요소를 설계하고 이어서 상세한 내용을 설계 3. Coding (구현) (= implementation) 상세 설계된 내용을 프로그래밍 언어를 사용하여 구현 4. Verification(검증) 구현된 결과가 문제의 요..