길벗·이지톡

도서 IT 전문서 프로그래밍/오픈소스

핵심 개념과 동작 원리로 이해하는 자료 구조 첫걸음!

유명한 자료 구조 책들이 여러 권 있지만, 방대한 양에 읽다 지치기 쉽다. 그래서 자료 구조를 좀 더 쉽게 공부하기 위해 단순히 자료 구조의 구현에 집중하기보다는 인덱스는 어떻게 작동하기에 데이터베이스의 성능을 좋게 만들 수 있을까?”라는 한 가지 질문을 던져 놓고 이 질문의 답을 찾아가는 과정을 담았다. 모든 자료 구조를 다루진 않지만 이 과정에서 다룰 수 있는 여러 가지 자료 구조를 배우며, 개념을 확장해 나가는 방식으로 설명한다. 빅오, 재귀 함수에서부터 다양한 그래프 알고리즘까지 그림 184개로 필수 자료 구조의 핵심 개념을 익힌 후 파이썬으로 구현한 코드도 직접 확인하고 실행해 볼 수 있다. 또한, 실제 자료 구조를 어디에 어떻게 활용할 수 있는지도 엿볼 수 있다. 이 책이 자료 구조를 학습하려는 분들에게 시작점이자 다른 유명한 자료 구조 책을 볼 수 있게 해주는 징검다리 역할을 해줄 것이다. 

목차

1장 재귀 함수

1.1 재귀 함수: 자신을 호출하는 신기한 함수

__1.1.1 재귀 함수로 팩토리얼 구현하기

__1.1.2 스택 프레임으로 재귀 함수 이해하기

__1.1.3 순열을 재귀 함수로 구현하기: 재귀 트리 사용하기

 

2장 성능 분석

2.1 자료 구조 성능 이야기: 빅오

__2.1.1 알고리즘 성능 분석

__2.1.2 성능을 비교하는 방법: 빅오

__2.1.3 방심은 금물!: 빅오의 함정

2.2 추상 데이터 타입이란

 

3장 배열: 변수가 한곳에 모여 있으면 빠르다!

3.1 동적 배열이란

3.2 지역성의 원리와 캐시

3.3 인덱싱: 데이터에 빠르게 접근한다!

3.4 동적 배열에서 데이터의 삽입과 삭제 1

3.5 동적 배열에서 데이터의 삽입과 삭제 2

 

4장 연결 리스트: 삽입과 삭제를 빠르게 할 수 없을까?

4.1 연결 리스트 이해하기

4.2 동적 배열과 연결 리스트

4.3 더미 이중 연결 리스트

 

5장 스택과 큐, 그리고 덱

5.1 스택: 데이터를 차곡차곡 쌓는다

__5.1.1 스택 구현: 동적 배열을 이용하여 구현하기

5.2 : 데이터로 줄 세우기

__5.2.1 큐 구현 1: 동적 배열을 단순하게 사용해서 구현하기

__5.2.2 큐 구현 2: 원형 큐로 구현하기

5.3 : 스택으로도 큐로도 사용할 수 있는 덱

 

6장 그래프: 관련 있는 데이터 연결하기

6.1 그래프 용어 정리

6.2 그래프를 표현하는 두 가지 방법: 도시와 도시를 이어 보자

6.3 그래프의 모든 노드 방문: 모든 도시를 여행해 보자

__6.3.1 너비 우선 탐색: 인근 도시부터 여행하기

__6.3.2 깊이 우선 탐색: 한 방향으로 쭉 따라 여행하기

 

7장 트리: 정말 쓸 데가 많은 자료 구조

7.1 트리 용어 정리

7.2 이진 트리의 순회: 모든 노드 방문하기

__7.2.1 전위 순회

__7.2.2 중위 순회

__7.2.3 후위 순회

__7.2.4 레벨 순서 순회

 

8장 다양한 트리 1: 이진 탐색 트리

8.1 이진 탐색 알고리즘

8.2 딕셔너리의 내부 구현

8.3 이진 탐색 트리

8.4 이진 탐색 트리의 구현

8.5 이진 탐색 트리의 단점

 

9장 다양한 트리 2: 레드 블랙 트리

9.1 어떻게 균형을 맞출 것인가?

9.2 레드 블랙 트리

9.3 레드 블랙 트리의 구현

 

10장 다양한 트리 3: B 트리

10.1 메모리 계층 구조

10.2 데이터베이스에 데이터 삽입, 탐색, 삭제해 보기

10.3 B 트리

10.4 B 트리에 키 삽입·삭제하기

10.5 B+ 트리

10.6 B 트리로 인덱스 만들기

 

11장 다양한 트리 4: 힙과 우선순위 큐

11.1

11.2 우선순위 큐

 

12장 다양한 그래프 알고리즘 1: 위상 정렬

12.1 위상 정렬

 

13장 다양한 그래프 알고리즘 2: 최소 비용 신장 트리

13.1 탐욕 알고리즘

13.2 크루스칼 알고리즘

__13.2.1 그래프의 표현

__13.2.2 분리 집합: 사이클이 형성되는지 어떻게 확인하지?

__13.2.3 크루스칼 알고리즘 구현

13.3 프림 알고리즘

__13.3.1 가중치가 가장 작은 에지를 찾는 방법

__13.3.2 프림 알고리즘 구현

 

14장 다양한 그래프 알고리즘 3: 최단 경로

14.1 데이크스트라 알고리즘

14.2 BFS와 프림 알고리즘, 그리고 데이크스트라 알고리즘

 

15장 자료 구조가 적용된 실제 사례

15.1 생산자 -소비자 패턴:

15.2 자바스크립트 엔진: 스택과 큐

더보기접기

저자

ㆍ지은이 양태환

지은이 소개

수의대를 다니던 도중 '적정 기술'에 매료되어 공학을 공부했습니다. 그때부터 시작한 코딩에 흠뻑 빠져 개발자가 되었습니다. 아직 모르는 게 많아 항상 즐겁게 공부합니다. 최근에는 어떻게 하면 더 많은 사람들이 프로그래밍을 재미있게 배울 수 있을지 고민하는 중입니다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.