온라인 무료 공개 [디딤돌 자료구조와 알고리즘 C++]
책 소개
이 책에서는 컴퓨터 프로그래머의 기초 지식인 알고리즘과 자료구조를 이론적인 접근과 실질적인 구현을 다루고 있어요.
자료구조는 프로그램에 관라할 데이터를 어떠한 구조로 보관하고 접근할 것인가를 다루는 것입니다. 선형 자료구조인 배열이나 연결리스트, 스택, 큐와 비선형 자료구조인 트리, 그래프 등이 있습니다.
“선형 자료구조에는
배열, 연결리스트, 스택, 큐”
“비선형 자료구조에는
트리, 그래프”
알고리즘은 문제를 해결하기 위한 논리의 집합이예요. 문제 해결 방법으로 분류하면 반복 알고리즘, 재귀 알고리즘, 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등이 있죠.
“반복 알고리즘,
재귀 알고리즘,
분할 정복 알고리즘,
동적 알고리즘,
탐욕 알고리즘”
컴퓨터 프로그래밍을 업무로 하는 이들에게 알고리즘과 자료구조는 실질적인 구현에서 필수적으로 필요합니다. 그리고 이들을 다루는 책은 매우 다양하죠.
이론적으로 접근하는 책들은 다양한 알고리즘과 자료구조를 다루지만 실제적인 구현없이 추상적으로 소개하 할 때가 많습니다. 그리고 실질적인 구현도 다루는 책들은 아주 기초적인 알고리즘과 자료구조를 중심으로 다루고 있어요.
이 책에서는 반복 알고리즘, 재귀 알고리즘, 분할 정복 알고리즘, 동적 프로그래밍, 탐욕 알고리즘 등을 소개하고 직접 구현하는 과정을 다룰 것입니다.
특히 자료구조 부분은 자료구조에 관한 설명과 더불어 표준 템플릿 라이브러리(STL, Stand Template Library)에서 제공하는 vector, list, map 등을 모델 삼아 템플릿 형태로 작성할 것입니다. 또한 자료구조를 사용하는 방법도 다룹니다.
“표준 템플릿 라이브러리
(STL, Stand Template Library)
vector, list, map“
“STL 사용 방법”
이 책 또한 의사 결정 알고리즘처럼 전문적인 알고리즘을 비롯하여 초보자들이 접근하기 어려운 부분은 다루지 않습니다. 보다 탄탄한 프로그래밍 실력을 다지기 위해 알고리즘과 자료구조를 익히고자 하는 많은 이들에게 도움이 되길 바랄게요.
목차
- 1. 소개 [자료구조와 알고리즘 with C++]
- 1.1 자료구조와 STL
- 1.2 알고리즘 소개
- 1.3 점근식 표기
- 3.3 스택(Stack)
- 2. 반복 알고리즘
- 2.1 순차 정렬(Sequential Sort)
- 2.1.1 순차 정렬 알고리즘 분석
- 2.1.2 공통으로 사용할 코드 구현
- 2.1.3 순차 정렬 알고리즘 구현
- 2.2 거품 정렬(Bubble Sort)
- 2.2.1 거품 정렬 알고리즘 분석
- 2.2.2 거품 정렬 알고리즘 구현
- 2.3 선택 정렬(Selection Sort)
- 2.3.1 선택 정렬 알고리즘 분석
- 2.3.2 선택 정렬 알고리즘 구현
- 2.4 삽입 정렬(Insertion Sort)
- 2.4.1 삽입 정렬 알고리즘 분석
- 2.4.2 삽입 정렬 알고리즘 구현
- 3. 선형 자료구조
- 3.1 배열과 vector
- 3.1.1 이 책에서 공통으로 사용하는 것들
- 3.1.2 vector에 순차적으로 보관
- 3.1.3 vector에 순차적으로 보관 예제
- 3.1.4 vector에 특정 키 순으로 보관
- 3.1.5 vector를 인덱스 연산으로 사용
- 3.1.6 vector를 인덱스 연산으로 사용 예제
- 3.2 연결리스트와 list
- 3.2.1 단순 연결리스트 만들기
- 3.2.1 단순 연결리스트 만들기 [소스 코드]
- 3.2.2 이중 연결리스트 만들기
- 3.2.2 이중 연결리스트 만들기 [소스 코드]
- 3.2.3 list 사용
- 3.3 스택(Stack) [소스 코드]
- 3.3 스택(Stack) [STL stack 사용)
- 3.4 큐(Queue)
- 3.4 큐(Queue) [소스 코드]
- 3.4 큐(Queue) [STL의 queue 사용]
- 3.5 큐를 이용한 스케쥴러 시뮬레이션
- 3.5 큐를 이용한 스케쥴러 시뮬레이션 [소스 코드]
- 4. vector 만들기
- 4.1 vector 구현
- 4.2 vector와 find_if 코드
- 5. list 만들기
- 5.1 list 구현
- 5.2 list 코드
- 6. 재귀 알고리즘
- 6.1 하노이 타워
- 6.1.1 하노이 타워 성능 분석
- 6.2 퀵 정렬(Quick Sort)
- 6.2.1 퀵 정렬 알고리즘 성능 분석
- 6.2.2 퀵 정렬 알고리즘 구현
- 6.3 이진 탐색(Binary Search)
- 6.3.1 순차 탐색과 이진 탐색의 성능 비교
- 7. 이진 탐색 트리
- 7.1 트리의 용어
- 7.2 이진 탐색 트리(Binary Search Tree) 개요
- 7.3 이진 탐색 트리 설계 및 사용
- 7.4 이진 탐색 트리 구현
- 7.4 이진 탐색 트리 구현 [소스 코드]
- 7.5 STL의 map 사용
- 7.5.1 STL map 사용 방법 1
- 7.5.2 STL map 사용 방법 2
- 8. STL 실습 – 장르별 도서 관리 프로그램
- 8.1 프로토 타이핑
- 8.2 장르 추가 및 전체 장르 보기
- 8.3 도서 추가
- 8.4 전체 도서 보기 및 전체 보기
- 8.5 도서 검색 및 특정 장르 보기
- 8.6 도서 삭제 및 소멸
- 8.7 장르별 도서 관리 프로그램 코드
- 9. 기타 이진 트리 및 분할 정복
- 9.1 힙 정렬 알고리즘
- 9.1.2 힙 정렬 알고리즘 성능 분석
- 9.1.3 힙 정렬 알고리즘 구현
- 9.2 스택을 이용한 수식 파서
- 9.3 수식 파서 트리(Numeric Parser Tree)
- 9.3.1 수식 문법 정규화
- 9.3.2 프로토 타이핑
- 9.3.3 토큰 구현
- 9.3.4 어휘 분석기(Lexer)와 구문 분석기(SynAnalyzer) 구현
- 9.3.5 수식 파서 트리 구현
- 9.3.6 수식 파서 트리를 이용한 계산기 코드
- 9.4 병합 정렬(Merge Sort)
- 9.4.1 병합 정렬 알고리즘 성능 분석
- 9.4.2 병합 정렬 알고리즘 구현
- 10. 동적 프로그래밍(DYNAMIC PROGRAMMING)
- 10.1 피보나치 수열
- 10. 2 순열 문제
- 10.2.1 순열 문제 구현
- 10.2.2 순열 문제 소스 코드
- 10.3 인접 행렬을 이용한 깊이 우선 탐색
- 10.3.1 그래프 구현
- 10.3.2 깊이 우선 탐색(인접 행렬) 구현
- 10.3.3 깊이 우선 탐색(인접 행렬) 코드
- 10.4 깊이 우선 탐색(정점과 간선 그래프)
- 10.4 깊이 우선 탐색(정점과 간선 그래프) [소스 코드]
- 11. 너비 우선 탐색
- 11.1 너비 우선 탐색(인접 행렬) 구현
- 11.1 너비 우선 탐색(인접 행렬) 구현 [소스 코드]
- 11.2 너비 우선 탐색(정점과 간선 그래프)
- 11.2 너비 우선 탐색(정점과 간선 그래프) [소스 코드]
- 11.3 다익스트라 알고리즘
- 11.3.1 다익스트라 알고리즘 구현
- 11.3.2 다익스트라 알고리즘 소스 코드
- 12. 탐욕 알고리즘
- 12.1 거스름 돈
- 12.2 SJF 알고리즘
- 12.3 프림 알고리즘
- 12.3.1 프림 알고리즘 구현
- 12.3.2 프림 알고리즘 소스 코드
- 12.4 크루스칼 알고리즘
- 12.4.1 크루스칼 알고리즘 구현
- 12.4.2 크루스칼 알고리즘 소스 코드
'프로그래밍 관련 책' 카테고리의 다른 글
[온라인 무료 공개] 디딤돌 알고리즘 C언어 출간 (0) | 2016.12.25 |
---|---|
[온라인 무료 공개] 디딤돌 Java 언어 Part1 출간 (0) | 2016.11.30 |
온라인 무료 공개 [Escort GoF의 디자인 패턴 C#] (1) | 2016.06.20 |
온라인 무료 공개 [디딤돌 C++] (1) | 2016.06.15 |
무료 동영상 강의 Escort C++ (2) | 2016.04.18 |
삶의 질 향상을 위한 S/W 자동화 기술 UI자동화 (2) | 2016.04.06 |
스택 계산기 - C언어(컴파일러 개념 적용) (0) | 2016.04.06 |
디딤돌 원격 제어 프로그램 with C# (0) | 2016.04.06 |
Escort 나만의 웹 검색엔진 만들기 (0) | 2016.04.06 |
Escort GoF의 디자인 패턴 C# (2) | 2016.04.06 |